[SLOT_n]
mode = button_ledBarПрограммный модуль для кнопки со шкалой заполнения на адресных светодиодах: лента светится от начала до заданной позиции.
Совместимость
Принцип работы
Рапортует об изменении состояния кнопки: нажатие, отпускание, а при включённых опциях — длинное и двойное нажатие. Подсветкой управляет по командам и внутренним связям.
Подсветка работает как линейная шкала: команда setPos задаёт уровень
заполнения, светодиоды от начала ленты до этой позиции горят цветом RGBcolor,
остальные — с яркостью minBright. Флаг dirInverse разворачивает
направление заполнения.

Топики
База топика события:
<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–65535. По умолчанию 0.
- doubleClickTime — число(int), длительность промежутка между нажатиями для регистрации двойного нажатия. Диапазон 0–65535. По умолчанию 0.
- eventFilter — флаг, подавляет короткое событие
press, когда сработало длинное или двойное нажатие. По умолчанию выключен — короткие события шлются всегда. - switchModeButton — флаг, режим переключателя: каждое нажатие меняет состояние
0/1и рапортуетevent/switch, событиеpressпри этом не шлётся. На старте модуль рапортуетswitch=0. По умолчанию выключен.
Доступные опции для шкалы:
- numOfLed — число(int), количество светодиодов в ленте. Диапазон 1–1024. По умолчанию 24.
- numOfPos — число(int), количество позиций светового эффекта. Диапазон 1–4096. По умолчанию 0.
- offset — число(int), смещение светового эффекта. По умолчанию 0.
- dirInverse — флаг, инверсия направления эффекта. Без флага заполнение идёт от 0 к numOfLed, с флагом - от конца к началу.
- ledDefaultState — число(int), состояние при запуске. Диапазон 0–1. По умолчанию 0.
- minBright — число(int), минимальное свечение. Диапазон 0–4095. По умолчанию 0.
- maxBright — число(int), максимальное свечение. Диапазон 0–4095. По умолчанию 255.
- increment — число(int), величина приращения яркости за цикл. Диапазон 0–255. По умолчанию 255.
- RGBcolor — строка(RGB), начальный цвет в формате R G B. По умолчанию 0 0 255.
- periodicUpdate — флаг, принудительно отправлять буфер ленты каждый цикл обновления, даже если картинка не изменилась.
Общие опции:
- refreshRate — число(int), частота обновления, кадров в секунду. Задаёт период опроса кнопки и период перерисовки ленты. По умолчанию 40 для кнопки и 30 для подсветки.
События
| Топик | Payload | Описание |
|---|---|---|
button_<slot>/event/press | целое | Рапортует при изменении состояния кнопки |
button_<slot>/event/longPress | целое | Рапортует при регистрации длинного нажатия |
button_<slot>/event/doubleClick | целое | Рапортует при регистрации двойного нажатия |
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/setPos | целое | Команда задаёт положение светового эффекта. Один параметр - номер позиции |
led_<slot>/action/enable | 0 / 1 | Включить (1) или выключить (0) подсветку |
Примеры
[SLOT_0]
mode = button_ledBar
options = numOfLed:30, numOfPos:30, RGBcolor:0 255 0, maxBright:180
;значение аналогового входа отображается уровнем шкалы
crosslink = analog_1/event/rawVal:@->led_0/action/setPos:@Зелёная шкала из 30 светодиодов показывает текущее значение аналогового входа.
[SLOT_1]
mode = button_ledBar
options = numOfLed:16, dirInverse, RGBcolor:255 128 0
;каждое нажатие увеличивает счётчик, счётчик задаёт уровень шкалы
crosslink = button_1/event/press:1->counter_6/action/set:+1Подробнее — внутренние связи (crossLink).