[SLOT_n]
mode = button_led

Программный модуль для кнопки с обычным (одноцветным) светодиодом подсветки.

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

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

Рапортует об изменении состояния кнопки: нажатие, отпускание, а при включённых опциях — длинное и двойное нажатие. Подсветкой управляет по командам и внутренним связям.

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

Топики

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

  • <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. По умолчанию выключен.

Доступные опции для подсветки:

  • ledInverseфлаг, флаг определяет инверсию светодиода.
  • ledDefaultStateчисло(int), состояние при запуске. Диапазон 0–1. По умолчанию 0.
  • minBrightчисло(int), минимальное свечение. Диапазон 0–255. По умолчанию 0.
  • maxBrightчисло(int), максимальное свечение. Диапазон 0–255. По умолчанию 255.
  • fadeTimeчисло(int), время затухания свечения в мс. Диапазон 10–10000. По умолчанию 100.
  • ledModeстрока(enum), задаёт режим анимации. Значения: none, flash.
  • ledRefreshRateчисло(int), частота перерисовки подсветки, кадров в секунду. Диапазон 1–4096. По умолчанию 40.

Общие опции:

  • buttonRefreshRateчисло(int), частота опроса кнопки, кадров в секунду. Диапазон 1–4096. По умолчанию 40.

События

ТопикPayloadОписание
button_<slot>/event/press0 / 1Рапортует при изменении состояния кнопки
button_<slot>/event/longPress0 / 1Рапортует при регистрации длинного нажатия
button_<slot>/event/doubleClick0 / 1Рапортует при регистрации двойного нажатия
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/setMinBright0255Установить минимальное значение яркости
led_<slot>/action/setMaxBright0255Установить максимальное значение яркости
led_<slot>/action/setFadeTime1010000Время переходного процесса при изменении яркости,
led_<slot>/action/enable0 / 1Включить (1) или выключить (0) подсветку

Пример: топик moduleBox/led_0/action/setMaxBright, payload 200.

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

  • none — без анимации. В состоянии «включено» яркость равна maxBright, в состоянии «выключено» — minBright.
  • flash — вспышки с равными промежутками времени, от minBright до maxBright.

Примеры

[SLOT_0]
mode = button_led
options = ledMode:flash, minBright:0, maxBright:255, fadeTime:500
;включить подсветку при нажатии кнопки, погасить при отпускании
crosslink = button_0/event/press:1->led_0/action/enable:1, button_0/event/press:0->led_0/action/enable:0

При активации подсветка плавно моргает: каждый кадр текущее значение яркости изменяется на рассчитанное приращение, после достижения максимума яркость начинает уменьшаться.

[SLOT_1]
mode = button_led
options = longPressTime:1000, eventFilter
;короткое нажатие переключает подсветку, длинное - перезагружает устройство
crosslink = button_1/event/press:1->led_1/action/toggleLedState:1, button_1/event/longPress:1->system/action/restart:1

Флаг eventFilter подавляет короткое событие press, когда сработало длинное нажатие — иначе оба события пришли бы одновременно.

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

Архив

Описание модуля для прошивок до перехода на конституцию — button_led (архив).