Поздравляем! Вы купили наш набор с декоративной ёлочкой и светодиодной гирляндой WS2812. Прежде чем ёлочка начнёт радовать ваш глаз, нужно собрать фанерные детали и настроить электронную часть. В этом и поможет инструкция.
Не забудьте разукрасить и кастомизировать ёлочку, чтобы получить свой уникальный вариант!
Для начала припаяйте штырьковые соединители ко всем светодиодным модулям WS2812. Их семь штук.
На каждый модуль необходимо припаять две линейки штырьковых соединителей длиной в три контакта. В комплекте с ёлочкой идут две полоски штырьковых соединителей 1×40 красного и жёлтого цвета. Полоску соединителей можно аккуратно разломить на несколько частей руками, но для удобства лучше воспользоваться бокорезами.
Соедините светодиодные модули WS2812 между собой в единую гирлянду, используя трёхпроводные шлейфы «мама-мама». В цепочке модулей пин `OUT` каждого предыдущего модуля соединяется с пином `IN` последующего. Всего на семь модулей понадобится шесть шлейфов.
Подключите первый модуль гирлянды к управляющей плате Iskra Nano Pro, используя трёхпроводной шлейф «мама-мама» с разделёнными контактами. Пин `IN` первого модуля WS2812 подключите к любому цифровому пину контроллера, например А7; пин VCC модуля к пину VIN контроллера, а пин GND — к земле контроллера.
Перед установкой светодиодных модулей на ёлочку вы можете разукрасить её фанерные детали по вкусу.
Закрепите светодиодные модули на ёлочке, используя саморезы 2×4 из комплекта. Саморезы вкручиваются через светодиодные модули в любые маленькие отверстия на ёлочке, имитирующие снег. Для этого понадобится небольшая отвёртка с крестообразным шлицем. Через большие отверстия на ёлке можно продеть трёхпроводные шлейфы, чтобы аккуратно проложить гирлянду.
Закрепите управляющую плату Iskra Nano Pro в подставку ёлки. Контроллер устанавливается контактами вверх и USB-портом наружу. Крепление имеет плотную посадку, и вам, возможно, придётся приложить усилие, чтобы вставить контроллер до конца.
Подключите плату Iskra Nano Pro к компьютеру кабелем micro-USB.
Установите среду программирования Arduino IDE для прошивки контроллера. Если возникают сложности, следуйте нашей инструкции по установке и настройке Arduino IDE.
Добавьте поддержку платы Iskra Nano Pro в Arduino IDE. Как это сделать, читайте в инструкции.
Для управления светодиодными модулями WS2812 в среде Arduino используется популярная библиотека Adafruit_NeoPixel. В качестве примера ёлочной программы подойдёт любой из стандартных демонстрационных примеров библиотеки.
ВНИМАНИЕ!
Для успешной загрузки скетчей понадобиться драйвер CH340. Прочитайте наши статьи по установке драйвера для Windows или для Linux
Осталось только прошить скетч, чтобы на ёлочке засияла светодиодная гирлянда.
#include <Adafruit_NeoPixel.h> #include <avr/power.h> #define PIN A7 Adafruit_NeoPixel strip = Adafruit_NeoPixel(49, PIN, NEO_GRB + NEO_KHZ800); void setup() { strip.begin(); strip.setBrightness(50); strip.show(); // Initialize all pixels to 'off' } void loop() { // Some example procedures showing how to display to the pixels: colorWipe(strip.Color(255, 0, 0), 50); // Red colorWipe(strip.Color(0, 255, 0), 50); // Green colorWipe(strip.Color(0, 0, 255), 50); // Blue //colorWipe(strip.Color(0, 0, 0, 255), 50); // White RGBW // Send a theater pixel chase in... theaterChase(strip.Color(127, 127, 127), 50); // White theaterChase(strip.Color(127, 0, 0), 50); // Red theaterChase(strip.Color(0, 0, 127), 50); // Blue rainbow(20); rainbowCycle(20); theaterChaseRainbow(50); } // Fill the dots one after the other with a color void colorWipe(uint32_t c, uint8_t wait) { for(uint16_t i=0; i<strip.numPixels(); i++) { strip.setPixelColor(i, c); strip.show(); delay(wait); } } void rainbow(uint8_t wait) { uint16_t i, j; for(j=0; j<256; j++) { for(i=0; i<strip.numPixels(); i++) { strip.setPixelColor(i, Wheel((i+j) & 255)); } strip.show(); delay(wait); } } // Slightly different, this makes the rainbow equally distributed throughout void rainbowCycle(uint8_t wait) { uint16_t i, j; for(j=0; j<256*5; j++) { // 5 cycles of all colors on wheel for(i=0; i< strip.numPixels(); i++) { strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255)); } strip.show(); delay(wait); } } //Theatre-style crawling lights. void theaterChase(uint32_t c, uint8_t wait) { for (int j=0; j<10; j++) { //do 10 cycles of chasing for (int q=0; q < 3; q++) { for (uint16_t i=0; i < strip.numPixels(); i=i+3) { strip.setPixelColor(i+q, c); //turn every third pixel on } strip.show(); delay(wait); for (uint16_t i=0; i < strip.numPixels(); i=i+3) { strip.setPixelColor(i+q, 0); //turn every third pixel off } } } } //Theatre-style crawling lights with rainbow effect void theaterChaseRainbow(uint8_t wait) { for (int j=0; j < 256; j++) { // cycle all 256 colors in the wheel for (int q=0; q < 3; q++) { for (uint16_t i=0; i < strip.numPixels(); i=i+3) { strip.setPixelColor(i+q, Wheel( (i+j) % 255)); //turn every third pixel on } strip.show(); delay(wait); for (uint16_t i=0; i < strip.numPixels(); i=i+3) { strip.setPixelColor(i+q, 0); //turn every third pixel off } } } } // Input a value 0 to 255 to get a color value. // The colours are a transition r - g - b - back to r. uint32_t Wheel(byte WheelPos) { WheelPos = 255 - WheelPos; if(WheelPos < 85) { return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3); } if(WheelPos < 170) { WheelPos -= 85; return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0); }
Ура! Ёлочка зажглась, а теперь вы можете поэкспериментировать с программой и придумать свои цветные анимации. Счастливого светодиодного нового года!