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 комментариев на «“Автоматическая подсветка лестницы при помощи Arduino”»
Сбой контроллера в тёмной комнате и кто-то поломает себе кости. >_<