WS2812 - RGB светодиоды (обновлено: 09 May 2021, 10:08:14)

Поддержка RGB светодиодов WS2812




Настройка опции

В шестеренке опции конструктора ESP8266 требуется указать максимальное количество используемых светодиодов. Чем больше установлено значение, тем больше опция занимает ОЗУ. Расчет 12 байт на один светодиод.

Подключение:

Питание WS2812 5 вольт. Требуется обеспечить соответствующий ток в зависимости от количества светодиодов. Цвета передаются в формате GRB!

Вход WS2812 подключается:

ESP8266 к GPIO 3 (RX)

ESP32 вывод назначается в дополнительных параметрах опции перед сборкой.

Во избежание выхода из строя входа первого GRB светодиода вывод данных подключаем после подключения GND и VDD.

Светодиоды боятся статики!!!

Управление с помощью GET команд:

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 - такая команда зажжёт три первых светодиода разными цветами: синим, зеленым, красным.

Управление через Interpreter

Аналогично GET командам существуют 2 функции rgbsend (hex строка) и rgb16send(hex строка).

Используя SD&SPIFFS на esp32 можно создавать большие файлы с условиями и задержками.

Управление через MQTT

Топик login/hostname/[set/]rgbsend - аналогично GET команде установки 255 уровней.

Топик login/hostname/[set/]rgb16send - аналогично GET команде установки 15 уровней.

Топик - set добавляется, если включены отдельные топики.

Управление через UDP

Экспериментальная функция, пока доступна только на 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 первых светодиода разным цветом: синим, зеленым, красным

Для развития опции принимаю предложения по формированию функций эффектов и других возможных применений опции. Если у вас есть наработки кода для данной опции, то рассмотрим варианты интеграции их в проект.