Контроль положения контактов 3-х позиционного переключателя с помощью Ардуино

В данной статье я покажу, как определять положение 3-х позиционного переключателя с помощью одного аналогового входа Ардуино.

3-х позиционный переключатель (иногда называемый ON-OFF-ON (ВКЛ-ВЫКЛ-ВКЛ) или SPTT) имеет 3 вывода: общий (в центре) и два боковых вывода. Когда рычажок переключателя находится вверху или внизу, общий вывод соединяется с одним из выходных контактов; когда рычажок находится в центральном положении, то общий вывод не подсоединен (висит в воздухе).

Благодаря только двум резисторам вы можете считывать положение рычажка с использованием аналогового входа AN0 PIN:

Для понимания работы схемы давайте проследим, что происходит в различных трех положениях рычажка переключателя:

  • Когда рычажок находится в центральном положении (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);   } }

Я добавил порог чувствительности для считываемых значений.

Демо

Собранная схема также очень простая, ее можно собрать на макетной плате: