[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/switch0 / 1Состояние переключателя, при опции switchModeButton

Пример: топик moduleBox/button_0/event/longPress, payload 1.

События longPress и doubleClick рапортуются только при ненулевых опциях longPressTime и doubleClickTime соответственно.

Команды

ТопикPayloadОписание
led_<slot>/action/toggleLedStateПереключить состояние подсветки на противоположное
led_<slot>/action/setRGBR G BКоманда задаёт цвет подсветки. Три параметра R G B
led_<slot>/action/setPosцелоеКоманда задаёт положение светового эффекта. Один параметр - номер позиции
led_<slot>/action/enable0 / 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).