CraftDuino v2.0
  • - это CraftDuino - наш вариант полностью Arduino-совместимой платы.
  • CraftDuino - настоящий конструктор, для очень быстрого прототипирования и реализации идей.
  • Любая возможность автоматизировать что-то с лёгкостью реализуется с CraftDuino!
Просто добавьте CraftDuino!

Автоматическая подсветка лестницы при помощи Arduino


Rimidalw (Владимир Лукьянов), реализовал отличный проект автоматической светодиодной подсветки лестницы, которая активируется при пересечении УЗ-датчика (HC-SR04) над первой ступенькой.

Для проекта использовались:
* Arduino Pro Mini;
* Ультразвуковой датчик измерения расстояния HC-SR04 — 2 шт;
* Драйвер светодиодов M5450;
* Регулятор напряжения L78M05CV;
* Светодиодная лента LSP0603W15 White — 17 шт;
* Мелочевка( провода, текстолит, штыревые соединители типа PLS, разъемы на плату BLS, термоусадочная трубка, конденсаторы и резисторы);
* Блок питания 12В от сигнализации.

скетч
используются библиотеки для работы:
* со светодиодным драйвером M5450;
* с ультразвуковым дальномером HC-SR04.

#include "lightuino3.h"
#include "Ultrasonic.h"

//Устанавливаем контакты для первого датчика
#define  TRIG_PIN  12
#define  ECHO_PIN  13
//Устанавливаем контакты для второго датчика
#define  TRIG2_PIN  10
#define  ECHO2_PIN  11
//Определяем первый датчик
Ultrasonic OurModuleUp(TRIG_PIN, ECHO_PIN);
//Определяем второй датчик
Ultrasonic OurModuleDown(TRIG2_PIN, ECHO2_PIN);
// pins 0, 1 used by Serial
const unsigned char DataPin = 6;
const unsigned char clockPin = 7;

// задержка между ступеньками
const long lightSpacing = 280;
//задержка свечения всей лестницы
const long lightHold = 10000;
//задержка выстрела сенсоров
const long pingReadDelay = 50;

// Диапазон при котором сработает сенсор
const float minBottomIn = 33.0f;
const float minTopIn = minBottomIn;

LightuinoSink sinks(clockPin, DataPin, 100, 4);

boolean bClimbStarted = false;
boolean bDescentStarted = false;

int val;
void setup() {
  Serial.begin(9600);        
  pinMode(DataPin, OUTPUT);
  pinMode(clockPin, OUTPUT);      
  delay(1000);   
  sinks.set(0,0,0);
}
 
void loop() {
   val = analogRead(0);
   //Проверяем освещенность в помещении
   if (val>=1020){
   
 UltrasonicDownFire();//Выстрел нижнего датчика  
  if(bClimbStarted) {
    bClimbStarted = false;
    bDescentStarted = false;
    climbLightSequence(); 
  } 
  else {
    // Выстрел верхнего датчика
    UltrasonicUpFire();    
    if(bDescentStarted) {
      bClimbStarted = false;
      bDescentStarted = false;
      descentLightSequence(); 
    } 
  }
  delay(pingReadDelay);  
  }
}

//Обработка верхнего датчика
void UltrasonicUpFire() {

if((OurModuleUp.Ranging(INC) < minTopIn) && (OurModuleUp.Ranging(INC) > 0))
{
// Serial.println("Top sensor tripped.");
bDescentStarted = true;
} 
} 

//Обработка нижнего датчика]
void UltrasonicDownFire() {
  
    if((OurModuleDown.Ranging(INC) < minTopIn) && (OurModuleDown.Ranging(INC) > 0)) {
   //   Serial.println("Bottom sensor tripped.");
      bClimbStarted = true;
    }
}

void climbLightSequence(){
LedsOnDown();
}
void LedsOnDown(){
  //Обнуляем
   byte ledState[9];
  for (int j=0;j<9;j++) {
    ledState[j] = B00000000;
  }
  //Зажигаем
  for (int k=1;k>=0;k--)
  {
  for (int j=8;j>=1;j--)    
  {
   ledState[k] = (ledState[k] >> 1) + 128;
    sinks.set(ledState); 
    delay(lightSpacing);
  }
     }
//Задержка
  delay(lightHold);
//Гасим   
  for (int k=1;k>=0;k--)
  {
  for (int j=8;j>=1;j--)    
    {
    ledState[k] = (ledState[k] >> 1);
    sinks.set(ledState); 
    delay(lightSpacing);
    }
  }
 delay(pingReadDelay);  
}

void descentLightSequence(){
  LedsOnUp();
} 

void LedsOnUp(){
 //Обнуляем
  byte ledState[9];
  for (int j=0;j<9;j++) {
    ledState[j] = B00000000;
  }
 //Зажигаем
  for (int k=0;k<=1;k++)
  {
  for (int j=0;j<9;j++)    
  {
    ledState[k]=(ledState[k] << 1) + 1;
    sinks.set(ledState);          
     delay(lightSpacing);
  }    }
  delay(lightHold);
  for (int k=0;k<=1;k++)
  {
  for (int j=0;j<9;j++)    
  {
    ledState[k]=(ledState[k] << 1);
    sinks.set(ledState);          
     delay(lightSpacing);
  }    
}
 delay(pingReadDelay);  
}


Ссылки
Автоматическая подсветка лестницы с помощью Arduino

По теме
Ультразвуковой датчик измерения расстояния HC-SR04

Arduino
Arduino, термины, начало работы
КМБ для начинающих ардуинщиков
Состав стартера (точка входа для начинающих ардуинщиков)
  • 0
  • 1 мая 2012, 10:38
  • admin

Комментарии (1)

RSS свернуть / развернуть
+
0
Сбой контроллера в тёмной комнате и кто-то поломает себе кости. >_<
avatar

DiverOfSky

  • 11 мая 2012, 02:11

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.