[SLOT_n]
mode = encoderAS5600Программный модуль абсолютного магнитного энкодера AS5600 по I2C: 12 бит, 4096 позиций на окружность.
Совместимость
- Модуль интерфейса I2C — схема подключения энкодера на странице модуля
Принцип работы
Рапортует об изменении положения ротора. Окружность делится на numOfPos сегментов — именно в этих единицах отдаётся значение.
Режим задаётся флагом absolute:
- без флага — инкрементальный режим: рапортуется приращение с прошлого отсчёта;
- с флагом — абсолютный: рапортуется текущая позиция.
Флаг floatOutput переводит вывод в дробное число от 0.0 до 1.0. Нуль сдвигается опцией zeroShift, направление счёта разворачивается флагом dirInverse, дрожание подавляется опциями deadZone и filterK.
Топики
База топика события:
<deviceName>/encoder_<slot>— напримерmoduleBox/encoder_0
База топика действия:
<deviceName>/encoder_<slot>— напримерmoduleBox/encoder_0
Полный топик — база плюс направление и имя: moduleBox/encoder_0/event/val.
Опции
Доступные опции:
- disableOnStart — флаг, стартовать в выключенном состоянии и ждать
action/enableсо значением1. По умолчанию модуль активен сразу. - absolute — флаг, флаг - абсолютный режим.
- floatOutput — флаг, флаг - вывод в формате float от 0 до 1.
- dirInverse — флаг, флаг - инверсия направления счета.
- deadZone — число(int), зона нечувствительности в единицах сырого угла (1/4096 оборота). Диапазон 0–32767. По умолчанию 0.
- zeroShift — число(int), смещение нуля в единицах сырого угла (1/4096 оборота). Диапазон −32768–32767. По умолчанию 0.
- filterK — число(float), коэффициент сглаживающего фильтра (скользящее среднее), от 0 до 1. Значение 1 отключает фильтр. По умолчанию 1.
- numOfPos — число(int), количество сегментов на окружности. Диапазон 2–4095. По умолчанию 24.
- refreshRate — число(int), период опроса значений в Гц. Диапазон 1–100. По умолчанию 20.
События
| Топик | Payload | Описание |
|---|---|---|
encoder_<slot>/event/val | целое либо 0.0–1.0 | Текущее значение - абс позиция, инкр приращение или float по настройкам |
encoder_<slot>/event/enable | 0 / 1 | Состояние модуля - активен 1 или спит 0 |
Пример: топик moduleBox/encoder_0/event/val, payload 17.
Команды
| Топик | Payload | Описание |
|---|---|---|
encoder_<slot>/action/enable | 0 / 1 | Включить (1) или выключить (0) модуль |
Примеры
[SLOT_1]
mode = encoderAS5600
options = absolute, floatOutput, numOfPos:24
;положение ротора задаёт громкость проигрывателя
crosslink = encoder_1/event/val:@->scaler_6/action/pushVal:@Абсолютный режим: текущая позиция рапортуется дробным числом от 0.0 до 1.0.
[SLOT_2]
mode = encoderAS5600
options = numOfPos:36, deadZone:8, filterK:0.3
;вращение по часовой перелистывает треки вперёд
crosslink = encoder_2/event/val:@>0->player_0/action/play:+1Подробнее — внутренние связи (crossLink).
Архив
Описание модуля для прошивок до перехода на конституцию — encoderAS5600 (архив).