[SLOT_n]
mode = button_runFireПрограммный модуль для кнопки с бегущим световым эффектом на ленте адресных светодиодов.
Совместимость
Принцип работы
Рапортует об изменении состояния кнопки. В активном состоянии формирует бегущий световой эффект: каждый цикл обновления сдвигает массив пикселей и рассчитывает новый пиксель в зависимости от выбранного режима анимации. В неактивном состоянии плавно гасит ленту до минимальной яркости со скоростью increment.

Топики
База топика события:
<deviceName>/button_<slot>— напримерmoduleBox/button_0
База топика действия:
<deviceName>/led_<slot>— напримерmoduleBox/led_0
Полный топик — база плюс направление и имя: moduleBox/button_0/event/press.
Опции
Доступные опции для кнопки:
- buttonInverse — флаг, флаг определяет инверсию кнопки.
- buttonDebounceGap — число(int), глубина фильтра от дребезга контактов в мс. Диапазон 1–4096. По умолчанию 10.
- longPressTime — число(int), продолжительность длинного нажатия. Диапазон 0–10000. По умолчанию 0.
- doubleClickTime — число(int), длительность промежутка между нажатиями для регистрации двойного нажатия. Диапазон 0–10000. По умолчанию 0.
- eventFilter — флаг, подавляет короткое событие
press, когда сработало длинное или двойное нажатие. По умолчанию выключен — короткие события шлются всегда. - switchModeButton — флаг, режим переключателя: каждое нажатие меняет состояние
0/1и рапортуетevent/switch, событиеpressпри этом не шлётся. На старте модуль рапортуетswitch=0. По умолчанию выключен.
Доступные опции для подсветки:
- numOfLed — число(int), количество светодиодов в ленте. Диапазон 1–1024. По умолчанию 24.
- ledsPerPixel — число(int), количество светодиодов в одном логическом пикселе - один расчёт цвета применяется к группе. Диапазон 1–256. По умолчанию 1.
- effectLen — число(int), длина светового эффекта для sin, sinAbs - число пикселей в одном периоде синусоиды. Диапазон 1–4096. По умолчанию 0.
- offset — число(int), смещение светового эффекта. По умолчанию 0.
- ledInverse — флаг, инверсия направления эффекта. Без флага движение идёт от 0 к numOfLed, с флагом — от конца к началу.
- ledDefaultState — число(int), состояние при запуске. Диапазон 0–1. По умолчанию 0.
- minBright — число(int), минимальное свечение. Диапазон 0–255. По умолчанию 0.
- maxBright — число(int), максимальное свечение. Диапазон 0–255. По умолчанию 255.
- increment — число(int), величина приращения яркости за цикл - скорость плавного затухания. Диапазон 1–255. По умолчанию 5.
- RGBcolor — строка(RGB), начальный цвет в формате R G B. По умолчанию 0 0 255.
- animMode — строка(enum), задаёт режим анимации. Значения:
rainbow,sin,sinAbs. - periodicUpdate — флаг, принудительно отправлять буфер ленты каждый цикл обновления, даже если картинка не изменилась.
Общие опции:
- refreshRate — число(int), частота обновления, кадров в секунду. Задаёт период опроса кнопки и период перерисовки ленты. По умолчанию 40 для кнопки и 30 для подсветки.
События
| Топик | Payload | Описание |
|---|---|---|
button_<slot>/event/press | 0 / 1 | Рапортует при изменении состояния кнопки |
button_<slot>/event/longPress | 0 / 1 | Рапортует при регистрации длинного нажатия |
button_<slot>/event/doubleClick | 0 / 1 | Рапортует при регистрации двойного нажатия |
button_<slot>/event/switch | 0 / 1 | Состояние переключателя, при опции switchModeButton |
Пример: топик moduleBox/button_0/event/longPress, payload 1.
События longPress и doubleClick рапортуются только при ненулевых опциях longPressTime и doubleClickTime соответственно.
Команды
| Топик | Payload | Описание |
|---|---|---|
led_<slot>/action/toggleLedState | — | Переключить состояние подсветки на противоположное |
led_<slot>/action/setRGB | R G B | Команда задаёт цвет подсветки. Три параметра R G B |
led_<slot>/action/enable | 0 / 1 | Включить (1) или выключить (0) эффект |
Режимы анимации
- rainbow — бегущая радуга. Каждый новый пиксель получает следующий оттенок цветового круга HSV с максимальной насыщенностью и яркостью maxBright.
- sin — синусоидальная яркость с периодом effectLen. В положительной части синусоиды яркость плавно меняется от minBright до maxBright, в отрицательной — фиксируется на minBright.
- sinAbs — то же, но отрицательная часть синусоиды отражается (берётся модуль), создавая непрерывный волнообразный эффект.
Примеры
[SLOT_0]
mode = button_runFire
options = numOfLed:60, animMode:rainbow, maxBright:200, refreshRate:30
;включить эффект по нажатию, выключить по отпусканию
crosslink = button_0/event/press:1->led_0/action/enable:1, button_0/event/press:0->led_0/action/enable:0Лента из 60 светодиодов с эффектом бегущей радуги, яркость ограничена значением 200.
[SLOT_1]
mode = button_runFire
options = numOfLed:30, animMode:sin, effectLen:10, RGBcolor:255 0 0, minBright:20, maxBright:255, increment:3
;переключить эффект по нажатию
crosslink = button_1/event/press:1->led_1/action/toggleLedState:1Лента из 30 светодиодов с синусоидальным красным эффектом. Период синусоиды — 10 пикселей, плавный переход с приращением 3.
Подробнее — внутренние связи (crossLink).