Новогодняя DIY-ёлка: инструкция по использованию
Поздравляем! Вы купили декоративную ёлочку со светодиодной гирляндой WS2812. Прежде чем ёлочка начнёт радовать глаз, нужно собрать фанерные детали и настроить электронную часть.
Не забудьте разукрасить и кастомизировать ёлочку, чтобы получить свой уникальный вариант!
Инструкция по сборке
Что понадобится?
Пайка контактов
- Разломите с помощью бокорезов две полоски контактных штырьков PLS-40 красного и жёлтого цвета по три контакта PLS-3.
- Припаяйте контактные штыри PLS-3 к светодиодному модулю WS2812:
- Красные штыри PLS-3 — к контактам с меткой
IN. - Жёлтые штыри PLS-3 — к контактам с меткой
OUT.
- Повторите операцию пайки контактов PLS-3 со всеми светодиодными модулями WS2812. В итоге должны получить семь модулей WS2812 с припаяными контактами PLS-3.

Сборка Ёлочки
- Закрепите светодиодные модули на ёлке с помощью саморезов 2×4 из комплекта. Саморезы вкручиваются через светодиодные модули в любые маленькие отверстия на ёлочке, имитирующие снег.

- Установите ёлочку в подставку.

- Закрепите управляющую плату Iskra Nano в подставку ёлки. Контроллер устанавливается контактами вверх и USB-портом наружу.

Схема подключения
- Соедините все светодиодные модули WS2812 между собой в единую гирлянду с помощью трёхпроводных шлейфов «мама-мама». В цепочке пин
OUTпредыдущего модуля соединяется с пиномINпоследующего. - Подключите первый модуль гирлянды к управляющей плате Iskra Nano с помощью трёхпроводного шлейфа «мама-мама» с разделёнными контактами.
| Цвет провода | Контакт первого модуля | Контакт Iskra Nano |
|---|---|---|
| Жёлтый | IN | A0 |
| Красный | VCC | 5V |
| Чёрный | GND | GND |
Прошивка
Подключение и настройка Arduino IDE
- Подключите плату Iskra Nano к компьютеру кабелем micro-USB.

-
- Для успешной загрузки скетчей понадобится драйвер чипа CH340. Прочитайте наши статьи по установке драйвера для Windows или для Linux.
- В Arduino IDE выберите плату Arduino Nano:
- В Arduino IDE выберите COM-порт платы:, где x — номер порта платы.
- Скачайте и установите библиотеку Adafruit_NeoPixel для управления светодиодными модулями WS2812.
- Прошейте плату Iskra Nano следующим демо-скетчем.
Исходный код
- ChristmasTreeSimple.ino
- // Подключаем библиотеку для работы со светодиодами WS2812
- #include <Adafruit_NeoPixel.h>
- // Даём понятное имя пину A0 со светодиодным модулем WS2812
- constexpr uint8_t LED_WS2812_PIN = A0;
- // В цепочке гирлянды семь светодиодных модулей
- // А на каждом модуле по семь светодиодов WS2812
- // Количество светодиодов LED_WS2812 = 49
- constexpr uint8_t COUNT_LED_WS2812 = 49;
- // Создаём объект для управления светодиодами WS2812
- Adafruit_NeoPixel led
- = Adafruit_NeoPixel(COUNT_LED_WS2812, LED_WS2812_PIN, NEO_GRB + NEO_KHZ800);
- void setup() {
- // Инициализируем светодиодные модули WS2812
- led.begin();
- // Устанавливаем яркость
- led.setBrightness(50);
- // Обновляем состояние светодиодов
- led.show();
- }
- void loop() {
- // Эффект «бегущий огонь» красного цвета
- colorWipe(led.Color(255, 0, 0), 50);
- // Эффект «бегущий огонь» зелёного цвета
- colorWipe(led.Color(0, 255, 0), 50);
- // Эффект «бегущий огонь» синего цвета
- colorWipe(led.Color(0, 0, 255), 50);
- // Театральный эффект «бегущий огонь» белого цвета
- theaterChase(led.Color(127, 127, 127), 50);
- // Театральный эффект «бегущий огонь» красного цвета
- theaterChase(led.Color(127, 0, 0), 50);
- // Театральный эффект «бегущий огонь» синего цвета
- theaterChase(led.Color(0, 0, 127), 50);
- // Эффект радуги
- rainbow(20);
- // Эффект прокручивающейся радуги
- rainbowCycle(20);
- // Театральный эффект «бегущий огонь» с радужной заливкой
- theaterChaseRainbow(50);
- }
- // Функция последовательного зажигания светодиодов указанным цветом
- void colorWipe(uint32_t c, uint8_t timeWait) {
- for (uint16_t i = 0; i < led.numPixels(); i++) {
- led.setPixelColor(i, c);
- led.show();
- delay(timeWait);
- }
- }
- // Функция эффекта плавного переливания цветов в виде радуги
- void rainbow(uint8_t timeWait) {
- uint16_t i, j;
- for (j = 0; j < 256; j++) {
- for (i = 0; i < led.numPixels(); i++) {
- led.setPixelColor(i, valueToRainbowColor((i + j) & 255));
- }
- led.show();
- delay(timeWait);
- }
- }
- // Функция эффекта плавного прокручивания цветов в виде радуги
- void rainbowCycle(uint8_t timeWait) {
- uint16_t i, j;
- for (j = 0; j < 256 * 5; j++) {
- for (i = 0; i < led.numPixels(); i++) {
- led.setPixelColor(i, valueToRainbowColor(((i * 256 / led.numPixels()) + j) & 255));
- }
- led.show();
- delay(timeWait);
- }
- }
- // Функция театрального эффекта «бегущие огни»
- void theaterChase(uint32_t c, uint8_t timeWait) {
- for (int j = 0; j < 10; j++) {
- for (int q = 0; q < 3; q++) {
- for (uint16_t i = 0; i < led.numPixels(); i = i + 3) {
- led.setPixelColor(i + q, c);
- }
- led.show();
- delay(timeWait);
- for (uint16_t i = 0; i < led.numPixels(); i = i + 3) {
- led.setPixelColor(i + q, 0);
- }
- }
- }
- }
- // Функция театрального эффекта «бегущие огни» с радужными цветами
- void theaterChaseRainbow(uint8_t timeWait) {
- for (int j = 0; j < 256; j++) {
- for (int q = 0; q < 3; q++) {
- for (uint16_t i = 0; i < led.numPixels(); i = i + 3) {
- led.setPixelColor(i + q, valueToRainbowColor((i + j) % 255));
- }
- led.show();
- delay(timeWait);
- for (uint16_t i = 0; i < led.numPixels(); i = i + 3) {
- led.setPixelColor(i + q, 0);
- }
- }
- }
- }
- // Функция преобразования значения от 0 до 255 в цвет радуги
- // Цвета плавно переходят: красный → зелёный → синий → красный
- uint32_t valueToRainbowColor(byte wheelPos) {
- wheelPos = 255 - wheelPos;
- if (wheelPos < 85) {
- return led.Color(255 - wheelPos * 3, 0, wheelPos * 3);
- }
- if (wheelPos < 170) {
- wheelPos -= 85;
- return led.Color(0, wheelPos * 3, 255 - wheelPos * 3);
- }
- wheelPos -= 170;
- return led.Color(wheelPos * 3, 255 - wheelPos * 3, 0);
- }
В итоге
Ура! Ёлочка зажглась, а теперь вы можете поэкспериментировать с программой и придумать свои цветные анимации. Счастливого светодиодного нового года!
Ресурсы
- Новогодняя DIY-ёлка в магазине