Analog Switch Input¶
Overview¶
An Analog Switch Input reads a multi-position switch on a single analog
pin. Instead of one wire per position, the switch presents a different voltage
(or resistance) for each position, and this input decodes which position is
selected. Use it for rotary mode switches, multi-button steering controls and
resistor-ladder keypads.
Prerequisites & hardware¶
- A switch wired to one analog pin that produces a distinct level per position.
- Know each position's nominal value so you can set the recognition tolerance.
-
External divider: the input does not provide an internal pull-up. In
Resistors mode you fit an external pull-up resistor (and optionally a
pull-down) to turn the switch's resistance into a voltage, and enter those
resistor values so the controller can work out the switch resistance. In
Voltage mode the switch presents the voltages directly and no divider is
needed.
Add it in the app¶
- Add a new input and choose Analog Switch Input as the type.
- Select the pin the switch is wired to.
- Give it a clear alias (e.g.
Mode Switch). - Choose the mode and range. The two modes are mutually exclusive — pick
whichever suits your hardware:-
Resistors: enter the external pull-up (and pull-down) resistor
values that form the divider. -
Voltage: enter the voltage range (min/max voltage) the position sits
in.
-
Resistors: enter the external pull-up (and pull-down) resistor
- Set the precision and, for mechanical switches, the debounce timings.
Settings reference¶
| Setting | Meaning | Unit | Range / values | Notes |
|---|---|---|---|---|
| Range | Input voltage range / scaling reference | — |
5 V, Internal 5 V, 12 V, Raw
|
Choose to cover the switch's full-scale voltage. Raw reports unscaled counts. |
| Mode | How the position is defined — the two are mutually exclusive | — |
Resistors, Voltage
|
Resistors = an external pull-up/pull-down divider turns the switch resistance into a voltage; Voltage = the position is recognised by its voltage range. Configure only the fields for the mode you choose. |
| Pull-up | Value of the external pull-up resistor forming the divider | Ω | uint32 | Resistors mode only. Tells the controller the divider's upper leg so it can compute the switch resistance. |
| Pull-down | Value of the external pull-down resistor | Ω | uint32 | Resistors mode only. The lower leg of the divider (optional). |
| Min voltage / Max voltage | Voltage range for the position | mV | uint32 | Voltage mode only. The window the position's voltage falls in. |
| Precision | Matching tolerance for recognising the position | — | uint32 | How close a reading must be to count as this position. Too loose = wrong position; too tight = missed positions. |
| Enable filter | Turns on debounce filtering | — | on / off | Recommended for mechanical switches. |
| Delay | Debounce delay before a change is accepted | ms | sint32 | New position must be stable this long. |
| Hold | Minimum time a position is held | ms | sint32 | Stops rapid re-triggering. |
| Interspace | Minimum gap between transitions | ms | sint32 | Ignores transitions closer than this. |
Common settings¶
Analog Switch Input also uses the shared settings — alias and pin.
See Common IO Settings.
Example — detect one switch position (Voltage mode)¶
Each Analog Switch Input recognises one position/level. This example detects a
single rotary position that sits at ~2.5 V:
- Type Analog Switch Input, alias
Mode Pos 2, on the switch's pin. - Mode
Voltage, Range5 V. -
Min/Max voltage
2300/2700mV — the window around that position. - Precision moderate so the detent maps cleanly to this position.
-
Enable filter, Delay
20, Hold30to settle between detents.
To decode every position of a multi-position rotary as its own signal, add one
Analog Switch Input per position — e.g. a 5-position rotary uses 5 inputs, each
watching its own voltage range. That is a valid setup but not the typical use;
most installs detect a single switch level.
Troubleshooting¶
-
Wrong position selected / jumps between two: the levels are too close for the
precision — tighten precision or space the positions further apart. -
No position recognised: in Voltage mode the reading is outside Min/Max
voltage; in Resistors mode the entered pull-up/pull-down values don't match
the resistors actually fitted. -
Position flickers when turning: enable the filter and raise Delay /
Interspace. -
Voltage doesn't change with the switch (Resistors mode): check the external
pull-up is fitted — without it the divider produces no voltage.
Related¶
- Analog Input — single analog voltage rather than a switch.
- Digital Input — single on/off contact.
- Mux Input — select between several inputs by a selector.
Updated by Adam Klama 1 day ago · 2 revisions