====== Новогодняя DIY-ёлка: инструкция по использованию ====== Поздравляем! Вы купили [[amp>product/plywood-christmas-tree?utm_source=man&utm_campaign=plywood-christmas-tree&utm_medium=wiki|декоративную ёлочку со светодиодной гирляндой WS2812]]. Прежде чем ёлочка начнёт радовать глаз, нужно собрать фанерные детали и настроить электронную часть. {{ :products:plywood-christmas-tree:plywood-christmas-tree-overview.1.jpg?nolink |}} Не забудьте разукрасить и кастомизировать ёлочку, чтобы получить свой уникальный вариант! ===== Инструкция по сборке ===== ==== Что понадобится? ==== - [[amp>product/plywood-christmas-tree?utm_source=man&utm_campaign=plywood-christmas-tree&utm_medium=wiki|Новогодняя DIY-ёлка]] - [[amp>product/soldering-iron-goot-30w?utm_source=man&utm_campaign=plywood-christmas-tree&utm_medium=wiki|Паяльник]] - [[amp>product/solder-08mm-small?utm_source=man&utm_campaign=plywood-christmas-tree&utm_medium=wiki|Припой]] - [[amp>product/flux-lti120?utm_source=man&utm_campaign=plywood-christmas-tree&utm_medium=wiki|Флюс]] - [[amp>product/side-cutting-pliers?utm_source=man&utm_campaign=plywood-christmas-tree&utm_medium=wiki|Бокорезы]] ==== Пайка контактов ==== - Разломите с помощью бокорезов две полоски контактных штырьков PLS-40 красного и жёлтого цвета по три контакта PLS-3. - Припаяйте контактные штыри PLS-3 к [[amp>product/led-circle-rgb-ws2812-7pcs?utm_source=man&utm_campaign=plywood-christmas-tree&utm_medium=wiki|светодиодному модулю WS2812]]: - Красные штыри PLS-3 — к контактам с меткой ''IN''. - Жёлтые штыри PLS-3 — к контактам с меткой ''OUT''.{{ :products:plywood-christmas-tree:plywood-christmas-tree-soldering.2.png?nolink |}} - Повторите операцию пайки контактов PLS-3 со всеми светодиодными модулями WS2812. В итоге должны получить семь модулей WS2812 с припаяными контактами PLS-3.{{ :products:plywood-christmas-tree:plywood-christmas-tree-soldering.3.png?nolink |}} ==== Сборка Ёлочки ==== - Закрепите светодиодные модули на ёлке с помощью саморезов 2×4 из комплекта. Саморезы вкручиваются через светодиодные модули в любые маленькие отверстия на ёлочке, имитирующие снег.{{ :products:plywood-christmas-tree:plywood-christmas-tree-build.1.png?nolink |}} - Установите ёлочку в подставку. {{ :products:plywood-christmas-tree:plywood-christmas-tree-build.2.png?nolink |}} - Закрепите управляющую плату Iskra Nano в подставку ёлки. Контроллер устанавливается контактами вверх и USB-портом наружу.{{ :products:plywood-christmas-tree:plywood-christmas-tree-build.3.png?nolink |}} ==== Схема подключения ==== - Соедините все светодиодные модули WS2812 между собой в единую гирлянду с помощью трёхпроводных шлейфов «мама-мама». В цепочке пин ''OUT'' предыдущего модуля соединяется с пином ''IN'' последующего. - Подключите первый модуль гирлянды к управляющей плате Iskra Nano с помощью трёхпроводного шлейфа «мама-мама» с разделёнными контактами. ^ Цвет провода ^ Контакт первого модуля ^ Контакт Iskra Nano ^ | Жёлтый | IN | A0 | | Красный | VCC | 5V | | Чёрный | GND | GND | {{ :products:plywood-christmas-tree:plywood-christmas-tree-wiring.png?nolink |}} ===== Прошивка ===== ==== Подключение и настройка Arduino IDE ==== - Подключите плату Iskra Nano к компьютеру кабелем [[amp>product/usb-cable-micro?utm_source=man&utm_campaign=plywood-christmas-tree&utm_medium=wiki|micro-USB]].{{ :products:plywood-christmas-tree:plywood-christmas-tree-software.1.png?nolink |}} - [[articles:arduino-ide-install|Установите среду программирования Arduino IDE]]. - [[products:iskra-nano#подключение_и_настройка|Настройте Arduino IDE на работу с контроллером Iskra Nano]]. - Для успешной загрузки скетчей понадобится драйвер чипа CH340. Прочитайте наши статьи по установке драйвера [[articles:driver-ch340|для Windows]] или [[projects:installing-the-ch340-on-linux|для Linux]]. - В Arduino IDE выберите плату Arduino Nano: Инструменты Плата Arduino AVR Arduino Nano - В Arduino IDE выберите COM-порт платы: Инструменты Порт COMx, где x — номер порта платы. - Скачайте и установите библиотеку [[https://github.com/adafruit/Adafruit_NeoPixel|Adafruit_NeoPixel]] для управления светодиодными модулями WS2812. - Прошейте плату Iskra Nano следующим демо-скетчем. ==== Исходный код ==== // Подключаем библиотеку для работы со светодиодами WS2812 #include // Даём понятное имя пину 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); } ===== В итоге ===== Ура! Ёлочка зажглась, а теперь вы можете поэкспериментировать с программой и придумать свои цветные анимации. Счастливого светодиодного нового года! ===== Ресурсы ===== * [[amp>product/plywood-christmas-tree?utm_source=man&utm_campaign=plywood-christmas-tree&utm_medium=wiki|Новогодняя DIY-ёлка]] в магазине ==== Софт ==== * [[amp>page/arduino-ide?utm_source=announce&utm_campaign=io-kit-clock&utm_medium=wiki |Страница загрузки Arduino IDE]] ==== Библиотеки ==== * [[https://github.com/adafruit/Adafruit_NeoPixel|Adafruit_NeoPixel]]