Контроль положення контактів 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); } }
Я додав поріг чутливості для зчитуваних значень.
Демо
Зібрана схема також дуже проста, її можна зібрати на макетній платі: