Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Интерактивный LED-дисплей в двери с PIR-датчиком — новогоднее приветствие на Arduino

Компоненты и материалы

Arduino UNO1 шт.
Arduino Nano R31 шт.
PIR-датчик движения (HC-SR501 или аналог)1 шт.
Реле 5В1 шт.
Перемычки1 набор
Блок питания 5В 30А (от ПК)1 шт.
RGB LED-лента (12В)1 шт.
Панели 8×8 NeoPixel (WS2812B)3 шт. (всего 24×8 = 192 LED)

Инструменты

О проекте

Проект сочетает 3 матрицы 8×8 WS2812B (24×8 пикселей) и PIR-датчик для приветствия гостей у двери.

Дополнительно: второй PIR-датчик на лестнице (Arduino Nano + реле) включает 12В RGB-ленту и гирлянду при подходе к дому.

Питание матриц — 5В 30А (блок от ПК). Управление — Arduino UNO (пин D6).

Алгоритм работы

  1. Калибровка PIR (30 сек).
  2. Если HIGH — показывать текст, сбрасывать таймер неактивности.
  3. Если LOW > 5 сек — переключиться на скринсейвер (циклические эффекты FastLED).

Код объединяет: FastLED (эффекты), Adafruit_NeoMatrix (текст), ручное управление PIR.

Код (основные фрагменты)

#include 
#include 
#include 
#include 

#define DATA_PIN 6
#define LED_TYPE WS2811
#define COLOR_ORDER GRB
#define NUM_LEDS 192
#define BRIGHTNESS 50

Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(24, 8, DATA_PIN,
  NEO_MATRIX_TOP + NEO_MATRIX_RIGHT + NEO_MATRIX_COLUMNS + NEO_MATRIX_PROGRESSIVE,
  NEO_GRB + NEO_KHZ800);

const uint16_t colors[] = { matrix.Color(255,0,0), matrix.Color(0,255,0), matrix.Color(0,0,255),
  matrix.Color(0,255,255), matrix.Color(255,0,255), matrix.Color(255,255,0), matrix.Color(255,255,255) };

int pirSensorPin = 5;
bool pirState = true;
long timeLow = 0;
int calibrationTime = 30;
int minimummSecsLowForInactive = 5000;

void setup() {
  delay(3000);
  FastLED.addLeds(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
  FastLED.setBrightness(BRIGHTNESS);
  matrix.setTextWrap(false);
  matrix.setBrightness(40);
  matrix.setTextColor(colors[0]);
  pinMode(pirSensorPin, INPUT);
}

void loop() {
  int val = digitalRead(pirSensorPin);
  if (val == HIGH) {
    // Текст
    matrix.fillScreen(0);
    matrix.setCursor(a, 0);
    matrix.print(F("Happy Holidays & Happy New Year!"));
    if (--a < -200) { a = matrix.width(); pass = (pass+1)%7; matrix.setTextColor(colors[pass]); }
    matrix.show();
    delay(100);
    if (pirState) pirState = false;
    timeLow = millis();
  } else {
    // Скринсейвер
    gPatterns[gCurrentPatternNumber]();
    FastLED.show();
    FastLED.delay(1000/FRAMES_PER_SECOND);
    EVERY_N_MILLISECONDS(20) { gHue++; }
    EVERY_N_SECONDS(10) { nextPattern(); }
    if (millis() - timeLow > minimummSecsLowForInactive) pirState = true;
  }
}
// Эффекты: rainbow, rainbowWithGlitter, confetti, sinelon, bpm, juggle, cylon

Схемы

Схема: 3 панели NeoPixel каскадно (DIN→DOUT) к D6 UNO, PIR к D5, блок питания 5В 30А на матрицы. Отдельно: Nano + PIR + реле + 12В лента.

Производственный процесс

  1. Сделай свой LUMAZOID: DIY Arduino музыкальный визуализатор
  2. Проект с датчиком DHT11: индикация температуры светодиодами и пьезо-динамиком на Arduino
  3. Мониторинг состояния реки: Arduino-система контроля качества воды
  4. Простой ИК-датчик препятствий на Arduino: ИК-светодиод и фотодиод
  5. Find Me: Умный поисковик вещей на Arduino и Bluetooth
  6. Пошаговое руководство: сборка умного четырёхногого робота на Arduino
  7. Умный водяной пистолет с датчиком движения на Arduino Nano
  8. Измерение расстояния в реальном времени: Ардуино-сонар с визуализацией в Processing
  9. Самодельный осциллограф на Arduino Nano (10 Гц – 50 кГц) с ЖК-дисплеем 128×64
  10. Arduino Flip Clock на матрице 8×8 LED — DIY проект реального времени