====== Новогодняя 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]]