вот что у меня есть.
ESP8266-12E (фактически построен NodeMcu, но распиновка такая же, как по ссылке) https: // acrobotic.com/acr-00018
Светодиодная лента использует микросхему WS2811
Код, который я позаимствовал из работ, частично работает с модами, которые я сделал. Я просто опубликую измененные мной разделы, но полный код здесь. https://github.com/jasoncoon/esp8266-fastled-webserver
Что он делает. Исходный код подключается к Wi-Fi. Загружает страницу управления, когда вы указываете IP-адрес отдельного браузера. Изменяет узор / цвета при вводе.
Мои изменения Исходная программа настроена на одну длинную светодиодную ленту, которую я протестировал, чтобы убедиться, что все работает. Затем я разрезал полосу на три части для подсветки шкафа. Я хочу, чтобы каждый из них был на отдельном штыре, чтобы я мог контролировать задержку между ними (заставляя полоски казаться длиннее, чем они есть на самом деле).
Проблема Проблема заключается в том, что после разрезания полосы и соединения не все три полосы светятся вместе. (насколько мне известно с прошлой ночи) Со всеми 3 входами работает только полоса 1 Отключение полосы 3 приводит к работе 1 и 2 Отключение полосы 2 заставляет 1 работать, а 3 все еще не работает Отключение полосы 1 заставляет работать 3 и 2 по-прежнему не работают (я думаю, что это был такой порядок). Каждая полоска сама по себе работает на своих соответствующих контактах. Имейте в виду, что исходная установка с одной длинной полосой работала нормально.
Изменения кода (с небольшими изменениями с каждой стороны, чтобы помочь найти его в исходном коде). Этот первый раздел был изменен с учетом различных полосок разной длины.
// the very next line is original, but I commented out to add data pins later
//#define DATA_PIN 8 // for Huzzah: Pins w/o special function: #4, #5, #12, #13, #14; // #16 does not work :(
#define LED_TYPE WS2811
#define COLOR_ORDER BRG
#define STRIP_1 6 // seperate strips are numbered and added together to form one long chain
#define STRIP_2 67 // by adding extra leds, you add a delay so you don't jump a gap between strips too fast
#define STRIP_3 27
#define STRIP_12 STRIP_1 + STRIP_2
#define NUM_LEDS STRIP_1 + STRIP_2 + STRIP_3
#define MILLI_AMPS 10000 // IMPORTANT: set here the max milli-Amps of your power supply 5V 2A = 2000
#define FRAMES_PER_SECOND 120 // here you can control the speed. With the Access Point / Web Server the animations run a bit slower.
FastLED.addLeds изначально был одной строкой, теперь ее 3.
FastLED.addLeds<LED_TYPE, 5, COLOR_ORDER>(leds, 0, STRIP_1); // for WS2812 (Neopixel)
FastLED.addLeds<LED_TYPE, 6, COLOR_ORDER>(leds, STRIP_1, STRIP_2);
FastLED.addLeds<LED_TYPE, 7, COLOR_ORDER>(leds, STRIP_12, STRIP_3);
Причина резки светодиодной ленты - места крепления. Полоса_1 находится между холодильником и плитой. Полоса_2 находится между плитой и раковиной. Полоса_3 находится между раковиной и стеной.
Причина разделения их на выводах заключается в том, что FastLED, похоже, не имеет простого способа обновить шаблоны. Я знаю, что с текущей настройкой она, по крайней мере, частично работает, без необходимости проходить и изменять 8 или около того шаблонов, уже имеющихся в программе. При отключенном Strip_3 полоски 1 и 2 качались вперед и назад как одна непрерывная полоса. Чтобы добавить задержку без изменения паттернов, я просто говорю, что Strip_1 длиннее. Это создает впечатление, что шарик света проходит сквозь печь и раковину невидимым образом и снова появляется на следующей полосе.
Вот пример, который я использовал для этой настройки. https://github.com/FastLED/FastLED/wiki/Multiple-Controller-Examples На полпути вниз: «Один массив, много полос»
Отказ от ответственности: я инженер-механик, который не обращал внимания в школе, когда мы занимались небольшим программированием, которое требовалось (задним числом отстой). В любом случае, я потратил последние полторы недели на изучение руководств и примеров C ++, чтобы зайти так далеко. Писать будет плохо, но, по крайней мере, я понимаю, что сейчас делает половина программы.