[SLOT_n]
mode = analogПрограммный модуль аналогового входа: измеряет напряжение встроенным АЦП и рапортует значение.
Совместимость
Модуль работает с любым аппаратным модулем, выводящим аналоговый сигнал на пин слота.
Принцип работы
Рапортует об изменении аналогового сигнала на входе, а при заданной опции periodic — ещё и периодически. Разрядность встроенного АЦП 12 бит, то есть сырое значение лежит в диапазоне 0–4095.
Рабочий диапазон ограничивается опциями minVal и maxVal, входной делитель выбирается опцией dividerMode под ожидаемое напряжение. Предусмотрен фильтр «скользящее среднее» (filterK) и зона нечувствительности (deadBand).
При заданном пороге (threshold) модуль работает как дискретный датчик:
рапортует 1 при превышении порога и 0 при возврате. Гистерезис и задержки
подтверждения подавляют дребезг у самого порога.
Топики
База топика события:
<deviceName>/analog_<slot>— напримерmoduleBox/analog_0
Полный топик — база плюс направление и имя: moduleBox/analog_0/event/rawVal.
Опции
Доступные опции:
- floatOutput — флаг, флаг определяет формат воводящего значения, если указан - будет выводиться значение с плавающей точкой, иначе - целочисленное.
- maxVal — число(int), определяет верхний порог значений. Диапазон 0–4095. По умолчанию 4095.
- minVal — число(int), определяет нижний порог значений. Диапазон 0–4095. По умолчанию 0.
- inverse — флаг, флаг задаёт инвертирование значений.
- filterK — число(float), коэффициент сглаживающего фильтра (скользящее среднее), от 0 до 1. Значение 1 отключает фильтр. По умолчанию 1.
- deadBand — число(int), фильтрация дребезга - определяет порог срабатывания. Диапазон 1–4095. По умолчанию 10.
- periodic — число(int), задаёт периодичночть отсчётов в миллисекундах. Диапазон 0–4095. По умолчанию 0.
- dividerMode — строка(enum), режим входного делителя — максимальное напряжение на входе:
- 5V — до 5 В (по умолчанию)
- 3V3 — до 3,3 В
- 10V — до 10 В
- threshold — число(int), задаёт пороговое значение - при превышении рапортует 1, иначе 0 Если задан - режим float игнорируется. Диапазон -1–4095. По умолчанию -1.
- thresholdHysteresis — число(int), ширина зоны гистерезиса порога Для перехода в 1 значение должно превысить threshold + hysteresis/2 Для перехода в 0 значение должно опуститься ниже threshold - hysteresis/2. Диапазон 0–2048. По умолчанию 0.
- thresholdRiseLag — число(int), задержка подтверждения перехода в состояние 1 (мс) Если за это время уровень не удержался - переход игнорируется. Диапазон 0–10000. По умолчанию 0.
- thresholdFallLag — число(int), задержка подтверждения перехода в состояние 0 (мс) Если за это время уровень не удержался - переход игнорируется. Диапазон 0–10000. По умолчанию 0.
События
| Топик | Payload | Описание |
|---|---|---|
analog_<slot>/event/ratio | 0.0–1.0 | Возвращает текущее значение канала ввиде числа с плавающей точкой, выражающее отношение к заданной шкале |
analog_<slot>/event/rawVal | целое | Возвращает текущее сырое целочисленное значение канала |
analog_<slot>/event/threshold | 0 / 1 | Рапортует 0/1 при пороговом режиме |
Пример: топик moduleBox/analog_0/event/rawVal, payload 2048.
Событие ratio рапортуется при поднятом флаге floatOutput, threshold — при заданной опции threshold.
Примеры
[SLOT_0]
mode = analog
options = dividerMode:5V, filterK:0.1, deadBand:20
;значение аналогового входа уходит в масштабатор
crosslink = analog_0/event/rawVal:@->scaler_6/action/pushVal:@Сырое значение сглаживается фильтром и передаётся в scaler для приведения к нужному диапазону.
[SLOT_1]
mode = analog
options = threshold:2000, thresholdHysteresis:100, thresholdRiseLag:50
;при превышении порога проиграть трек 0
crosslink = analog_1/event/threshold:1->player_0/action/play:0Дискретный режим: переход в 1 подтверждается 50 мс, гистерезис 100 единиц
не даёт состоянию дребезжать у порога.
Подробнее — внутренние связи (crossLink).
Архив
Описание модуля для прошивок до перехода на конституцию — analog (архив).