[SLOT_n]
mode = button_swiperLed

Программный модуль для кнопки с подсветкой, поддерживающей световые эффекты свайпа в четырёх направлениях.

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

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

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

По команде swipe лента отыгрывает анимацию проведения в заданном направлении: up, down, left или right — например, по жесту датчика или по нажатию кнопки.

Топики

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

  • <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. По умолчанию 16.
  • offsetчисло(int), смещение светового эффекта. По умолчанию 0.
  • ledDefaultStateчисло(int), состояние при запуске. Диапазон 0–1. По умолчанию 0.
  • minBrightчисло(int), минимальное свечение. Диапазон 0–255. По умолчанию 0.
  • maxBrightчисло(int), максимальное свечение. Диапазон 0–255. По умолчанию 255.
  • RGBcolorстрока(RGB), начальный цвет в формате R G B. По умолчанию 0 0 255.

Общие опции:

  • refreshRateчисло(int), частота обновления, кадров в секунду. Задаёт период опроса кнопки и период перерисовки ленты. По умолчанию 40 для кнопки и 25 для подсветки.

События

Топик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/swipeup, down, left, rightКоманда запускает световой эффект свайпа. Значения - up, down, left, right
led_<slot>/action/enable0 / 1Включить (1) или выключить (0) подсветку

Примеры

[SLOT_2]
mode = button_swiperLed
options = RGBcolor:0 255 0
;нажатие и отпускание кнопки запускают свайпы в разные стороны
crosslink = button_2/event/press:1->led_2/action/swipe:down, button_2/event/press:0->led_2/action/swipe:up
[SLOT_3]
mode = button_swiperLed
options = numOfLed:16, RGBcolor:0 128 255
;нажатие своей кнопки - эффект вверх, отпускание - вниз
crosslink = button_3/event/press:1->led_3/action/swipe:up, button_3/event/press:0->led_3/action/swipe:down

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

Архив

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