Поддержка RGB светодиодов WS2812
В шестеренке опции конструктора ESP8266 требуется указать максимальное количество используемых светодиодов. Чем больше установлено значение, тем больше опция занимает ОЗУ. Расчет 12 байт на один светодиод.
Питание WS2812 5 вольт. Требуется обеспечить соответствующий ток в зависимости от количества светодиодов. Цвета передаются в формате GRB!
Вход WS2812 подключается:
ESP8266 к GPIO 3 (RX)
ESP32 вывод назначается в дополнительных параметрах опции перед сборкой.
Во избежание выхода из строя входа первого GRB светодиода вывод данных подключаем после подключения GND и VDD.
Светодиоды боятся статики!!!
http://[ip_adr]/rgbsend?data=XXXXXX, где XXXXXX - данные в hex в формате 255 уровней яркости (8 бит) каждого из 3 цветов.
По 3 байта каждый LED.
Пример: http://[ip_adr]/rgbsend?data=0000FF00FF00FF0000 - такая команда зажжёт три первых светодиода разными цветами: синим, зеленым, красным.
http://[ip_adr]/rgb16send?data=XXX, где XXX - данные в hex в формате 15 уровней яркости (4 бита) каждого из 3 цветов.
Пример: http://[ip_adr]/rgb16send?data=00F0F0F00 - такая команда зажжёт три первых светодиода разными цветами: синим, зеленым, красным.
Аналогично GET командам существуют 2 функции rgbsend (hex строка) и rgb16send(hex строка).
Используя SD&SPIFFS на esp32 можно создавать большие файлы с условиями и задержками.
Топик login/hostname/[set/]rgbsend - аналогично GET команде установки 255 уровней.
Топик login/hostname/[set/]rgb16send - аналогично GET команде установки 15 уровней.
Топик - set добавляется, если включены отдельные топики.
Экспериментальная функция, пока доступна только на ESP8266. Отправляем на порт 1234 данные в hex или в бинарном формате.
Режим UDP управления выбирается в дополнительных настройках (в шестеренке):
0 - выключен UDP.
1 - 8 битный hex режим (2 буквы на 1 цвет).
2 - 4 битный hex режим (1 буква на цвет).
3 - бинарный режим.
Имеется возможность обратится напрямую к функции ws2812_push(массив данных, длина массива) для формирования своих цветовых эффектов.
Пример:
static uint8_t data[]={ 255,0,0, 0,255,0, 0,0,255 }; ws2812_push(data, 9);Данный пример зажжет 3 первых светодиода разным цветом: синим, зеленым, красным
Для развития опции принимаю предложения по формированию функций эффектов и других возможных применений опции. Если у вас есть наработки кода для данной опции, то рассмотрим варианты интеграции их в проект.