Контроль положення контактів 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);
  }
}

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

Демо

Зібрана схема також дуже проста, її можна зібрати на макетній платі:

Оригінал статті

Top