[SLOT_n]
mode = pwmLeds

Программный модуль трёх ШИМ-каналов с частотой 5 кГц — для светодиодных лент, ламп и прочих нагрузок с плавной регулировкой.

Совместимость

Принцип работы

Три канала ШИМ трактуются как компоненты цвета R, G и B. Целевой цвет задаётся опцией RGBcolor или командой setRGB, режим анимации — опцией ledMode.

Яркость меняется плавно: за время fadeTime значение переходит между minBright и maxBright кадрами с частотой refreshRate.

Каналами можно управлять и по отдельности — командой ch_N/setBright. Это удобно, когда к модулю подключены три независимые одноцветные нагрузки, а не одна RGB-лента.

Топики

База топика события:

  • <deviceName>/pwmLeds_<slot> — например moduleBox/pwmLeds_0

База топика действия:

  • <deviceName>/pwmLeds_<slot> — например moduleBox/pwmLeds_0

Полный топик — база плюс направление и имя: moduleBox/pwmLeds_0/action/setRGB.

Опции

Доступные опции:

  • disableOnStart — флаг, стартовать в выключенном состоянии и ждать action/enable со значением 1. По умолчанию модуль активен сразу.
  • inverse — флаг, инверсия значений.
  • maxBright — число(int), максимальная яркость. Диапазон 1–4096. По умолчанию 255.
  • minBright — число(int), минимальная яркость. Диапазон 0–4096. По умолчанию 0.
  • refreshRate — число(int), период обновления. Диапазон 1–100. По умолчанию 40.
  • fadeTime — число(int), время затухания свечения в миллисекундах. Диапазон 10–10000. По умолчанию 100.
  • RGBcolor — строка(RGB), начальный цвет. Задаётся десятичными значениями R G B через пробел. 0 0 255 - синий по умолчанию. По умолчанию 0 0 255.
  • ledMode — строка(enum), задаёт режим анимации: default - постоянное свечение целевым цветом. flash - мигание между min и max яркостью. rainbow - циклический перебор оттенков HSV. Значения: default, flash, rainbow.

События

ТопикPayloadОписание
pwmLeds_<slot>/event/enable0 / 1Состояние модуля - активен (1) или спит (0)

Команды

ТопикPayloadОписание
pwmLeds_<slot>/action/setRGBR G BУстановить новый целевой цвет. Цвет задаётся десятичными значениями R G B через пробел. Пример, 255 0 0 - красный
pwmLeds_<slot>/action/setModedefault, flash, rainbowУстановить новый режим анимации цветов. default - постоянное свечение целевым цветом. flash - мигание между min и max яркостью. rainbow - циклический перебор оттенков HSV
pwmLeds_<slot>/action/setIncrement1–255Приращение яркости за кадр — скорость анимации и переходов
pwmLeds_<slot>/action/setMaxBright1–255Установить максимальное значение яркости для всех каналов. Значение
pwmLeds_<slot>/action/ch_0/setBright0–255Яркость канала 0
pwmLeds_<slot>/action/ch_1/setBright0–255Яркость канала 1
pwmLeds_<slot>/action/ch_2/setBright0–255Яркость канала 2
pwmLeds_<slot>/action/setMinBright0–254Установить минимальное значение яркости. Значение
pwmLeds_<slot>/action/setFadeTime100–10000Время переходного процесса при изменении яркости,
pwmLeds_<slot>/action/enable0 / 1Включить (1) или выключить (0) модуль

Пример: топик moduleBox/pwmLeds_0/action/ch_1/setBright, payload 128.

Режимы анимации

  • default — постоянное свечение целевым цветом.
  • flash — мигание между minBright и maxBright.
  • rainbow — циклический перебор оттенков по палитре HSV.

Примеры

[SLOT_0]
mode = pwmLeds
options = ledMode:rainbow, fadeTime:5000, RGBcolor:0 0 255
;кнопка включает и выключает подсветку
crosslink = button_1/event/press:@->pwmLeds_0/action/enable:@

При включении подсветка плавно переливается по палитре HSV, время перехода 5 секунд.

[SLOT_1]
mode = pwmLeds
options = ledMode:default, maxBright:200, fadeTime:300
;три канала как три независимые лампы
crosslink = in_2/event/ch_0:1->pwmLeds_1/action/ch_0/setBright:200, in_2/event/ch_0:0->pwmLeds_1/action/ch_0/setBright:0

Подробнее — внутренние связи (crossLink).