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

Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Android Arduino Bluetooth CraftDuino DIY IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна конкурс манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение