В данной статье я покажу, как определять положение 3-х позиционного переключателя с помощью одного аналогового входа Ардуино.
3-х позиционный переключатель (иногда называемый ON-OFF-ON (ВКЛ-ВЫКЛ-ВКЛ) или SPTT) имеет 3 вывода: общий (в центре) и два боковых вывода. Когда рычажок переключателя находится вверху или внизу, общий вывод соединяется с одним из выходных контактов; когда рычажок находится в центральном положении, то общий вывод не подсоединен (висит в воздухе).
Благодаря лишь двум резисторам вы можете считывать положение рычажка с использованием аналогового входа AN0 PIN:
Для понимания работы схемы давайте проследим, что происходит в различных 3-х положениях рычажка переключателя:
- Когда рычажок находится в центральном положении (2), аналоговый вход AN0 PIN подсоединен к напряжению 5В через резистор R1 (подтягивающий резистор): считываемое значение составляет около 1023
- Когда рычажок находится в верхнем положении (3), аналоговый вход AN0 PIN подсоединен к делителю напряжения (резисторы R1 и R2). Если эти два резистора имеют одинаковое сопротивление, тогда напряжение на входе AN0 PIN составляет 2.5В и считываемое значение составляет 512
- Когда рычажок находится в нижнем положении (1), аналоговый вход AN0 PIN подсоединен к земле; считываемое значение составляет 0.
Скетч проекта очень простой:
#define BUTTON_PIN A0
int previousState;
void setup() {
Serial.begin(9600);
previousState = 0;
}
void loop() {
int analogValue = analogRead(BUTTON_PIN);
int actualState;
if(analogValue < 100) actualState = 1;
else if(analogValue < 900) actualState = 3;
else actualState = 2;
if(previousState != actualState) {
previousState = actualState;
Serial.print(«Button state: «);
Serial.println(actualState);
}
}
Я добавил порог чувствительности для считываемых значений.
Демо
Собранная схема также очень простая, ее можно собрать на макетной плате: