Волшебная лампа на WS2812 и Arduino: эффекты огня и искр

Волшебная лампа на WS2812 — завораживающий ночник с эффектами пламени, искр и градиентов на Arduino. 8 светодиодов NeoPixel создают реалистичное свечение костра, идеально для сказок детям или релакса взрослым. Управление яркостью, скоростью, палитрой через код. Работает от USB, автономно. Проект прост: макетная плата, библиотека FastLED. Расширьте до 50+ LED для яркого огня. Совместимо с ESP8266 для Wi-Fi управления.

Волшебная лампа WS2812 Arduino эффекты огня искр

Почему 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);
}
Управляет светодиодной лентой WS2812 на 8 светодиодов через библиотеку FastLED.
Создаёт эффект «пламени», имитируя мерцающее, поднимающееся пламя.
Использует массив 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-печать. Рассеиватель — матовая плёнка или бумага.

📁 Скачать примеры