Волшебная лампа на WS2812 и Arduino: эффекты огня и искр
Волшебная лампа на WS2812 — завораживающий ночник с эффектами пламени, искр и градиентов на Arduino. 8 светодиодов NeoPixel создают реалистичное свечение костра, идеально для сказок детям или релакса взрослым. Управление яркостью, скоростью, палитрой через код. Работает от USB, автономно. Проект прост: макетная плата, библиотека FastLED. Расширьте до 50+ LED для яркого огня. Совместимо с ESP8266 для Wi-Fi управления.
Почему WS2812 для волшебной лампы
WS2812 (NeoPixel) — адресные RGB-светодиоды, каждый независимый. Эффект огня: случайные цвета от жёлтого/оранжевого/красного, «охлаждение» снизу вверх, искры. FastLED библиотека упрощает анимацию. Низкое потребление (60 мА на LED при полной яркости). Работает от 5В USB Arduino. В темноте — уютный ночник, при свете — декоративная подсветка. Легко добавить кнопки, энкодер или Wi-Fi для смены эффектов.
Компоненты
- Arduino Uno/Nano
- 8 NeoPixel WS2812 LED (или лента 8 шт.)
- Резистор 330 Ом (DIN первого LED)
- Конденсатор 1000 мкФ (параллельно питанию)
- Провода, макетная плата
Схема подключения
DIN первого LED → D6 Arduino (через 330 Ом). +5V LED → 5V Arduino. GND → GND. Конденсатор между +5V/GND для стабильности. Последний DOUT не подключать.
Библиотека FastLED
Установите из Менеджера библиотек Arduino IDE. Примеры: Fire2012 — основа эффекта.
Скетч волшебной лампы
#include <FastLED.h>
#define NUM_LEDS 8
#define DATA_PIN 6
CRGB leds[NUM_LEDS];
#define COOLING 55
#define SPARKING 120
void setup() {
FastLED.addLeds(leds, NUM_LEDS);
FastLED.setBrightness(255);
}
void loop() {
fadeToBlackBy( leds, NUM_LEDS, 20);
int heat[NUM_LEDS];
for( int i = 0; i < NUM_LEDS; i++) {
heat[i] = random8(0,255);
heat[i] = qsub8( heat[i], random8(0, ((COOLING * 10) / NUM_LEDS) + 2));
}
for( int k= NUM_LEDS - 1; k >= 2; k--) {
heat[k] = (heat[k - 1] + heat[k - 2] + heat[k - 2]) / 3;
}
if( random8() < SPARKING ) {
int y = random8(7);
heat[y] = 255;
}
for( int j = 0; j < NUM_LEDS; j++) {
leds[j] = HeatColor( heat[j]);
}
FastLED.show();
delay(30);
}
Создаёт эффект «пламени», имитируя мерцающее, поднимающееся пламя.
Использует массив heat для моделирования температуры каждого светодиода, плавное затухание (fadeToBlackBy) и случайные вспышки (SPARKING).
Отображает вычисленные цвета на ленте с помощью HeatColor().
Настройка эффекта
COOLING (55) — "охлаждение" пламени. SPARKING (120) — искры. Выше COOLING — ниже огонь, больше SPARKING — искр. Палитра HeatColor: жёлтый/оранжевый/красный. Меняйте для синих/зелёных огней. Brightness 0–255.
Расширение лампы
50+ LED для яркого костра. Кнопки для режимов (огонь, радуга). Энкодер для скорости. ESP8266 для Wi-Fi смены цветов. Корпус из бутылки или колбы.
Заключение
Волшебная лампа на WS2812 — уютный ночник с эффектом огня. Простой код FastLED, минимум деталей. Расширьте до умного освещения.
FAQ — Волшебная лампа WS2812
Лента не светится?
Проверьте питание 5V, резистор 330 Ом на DIN, конденсатор 1000 мкФ. Правильный порядок GRB в FastLED.
Мерцание или нестабильность?
Добавьте конденсатор 1000 мкФ между +5V/GND. Отдельный блок питания 5V 2A для >20 LED.
Как изменить палитру огня?
В HeatColor() замените на RainbowColors или свой массив CRGB. COOLING/SPARKING регулируют высоту/искры.
Больше LED?
NUM_LEDS = 50, отдельное питание. Для 100+ — несколько Arduino или ESP32.
Wi-Fi управление?
ESP8266 + WebServer, слайдер для скорости/яркости.
Другие эффекты?
FastLED примеры: Rainbow, Confetti, Juggle. Меняйте в loop().
Корпус для лампы?
Старый стакан, колба, 3D-печать. Рассеиватель — матовая плёнка или бумага.