Интерактивный LED-дисплей в двери с PIR-датчиком — новогоднее приветствие на Arduino
Компоненты и материалы
| Arduino UNO | 1 шт. |
| Arduino Nano R3 | 1 шт. |
| 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-датчик для приветствия гостей у двери.
- Режим ожидания (нет движения):/screensaver-эффекты (радуга, конфетти, биение, цилон и др.) на базе FastLED DemoReel100.
- Обнаружение движения: бегущая строка «Happy Holidays & Happy New Year!» с сменой цветов.
Дополнительно: второй PIR-датчик на лестнице (Arduino Nano + реле) включает 12В RGB-ленту и гирлянду при подходе к дому.
Питание матриц — 5В 30А (блок от ПК). Управление — Arduino UNO (пин D6).
Алгоритм работы
- Калибровка PIR (30 сек).
- Если HIGH — показывать текст, сбрасывать таймер неактивности.
- Если 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В лента.
Производственный процесс
- Сделай свой LUMAZOID: DIY Arduino музыкальный визуализатор
- Проект с датчиком DHT11: индикация температуры светодиодами и пьезо-динамиком на Arduino
- Мониторинг состояния реки: Arduino-система контроля качества воды
- Простой ИК-датчик препятствий на Arduino: ИК-светодиод и фотодиод
- Find Me: Умный поисковик вещей на Arduino и Bluetooth
- Пошаговое руководство: сборка умного четырёхногого робота на Arduino
- Умный водяной пистолет с датчиком движения на Arduino Nano
- Измерение расстояния в реальном времени: Ардуино-сонар с визуализацией в Processing
- Самодельный осциллограф на Arduino Nano (10 Гц – 50 кГц) с ЖК-дисплеем 128×64
- Arduino Flip Clock на матрице 8×8 LED — DIY проект реального времени