[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/ratio0.0–1.0Возвращает текущее значение канала ввиде числа с плавающей точкой, выражающее отношение к заданной шкале
analog_<slot>/event/rawValцелоеВозвращает текущее сырое целочисленное значение канала
analog_<slot>/event/threshold0 / 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 (архив).