Wstęp
Na podstawie tutoriala Johna Boxall'a p.t.: "Using analog input for multiple buttons".
Idea podłączenia większej liczby przycisków z Arduino za pomocą pinu wejścia analogowego wynika z chęci oszczędzenia wejść cyfrowych, które mogą zostać wykorzystane w układach w bardziej produktywny sposób. W rozwiązaniu, które zostanie przedstawoione, wiele przycisków może być podłączonych do jednego pinu analogowego. Rozpoznanie, z jakim rodzajem akcji mamy w danej chwili do czynienia odbywa się w oparciu o interpretację wartości napięcia przekazywanego w momencie naciśnięcia przycisku z dzielników napięcia.
Istnieją dwa rozwiązania tematu sterowania przyciskami układów. Oba wykorzystują ideę pomiarów spadków napięć powstających w dzielnikach napięcia utworzonych na tzw. "drabinkach rezystorowych". W pierwszym rozwiązaniu, dla sterowania n przyciskami wykorzystuje się n rezystorów o różnych wartościach rezystancji (Fig. 2).
W drugim rozwiązaniu stosowanych jest n rezystorów o takiej samej wartości rezystancji (Fig. 3).
Działanie układów, w obu przypadkach opiera się o wykorzystanie funkcji analogRead() i interpretację wyników za pomocą jakiejś instrukcji warunkowej. W układzie z Fig. 1. zastosowano rozwiązanie oparte o jednakowej rezystory o rezystancji 100 Ω (Fig. 3).
Lista części
- platforma prototypowa Arduino (tu Leonardo),
- Konwerter I2C LCM1602,
- przyciski montażowe (5 szt.),
- rezystory 100 Ω (5 szt.),
- dioda LED,
- rezystor 150-200 Ω (1 szt.),
- płytka prototypowa,
- mostki/przewody
Dodatkowo w układzie zaimplementowano funkcje: sygnalizacji naciśnięcia przycisku poprzez zaświecenie diody LED oraz wyłączania podświetlenia LCD po upływie czasu 2500ms od momentu naciśnięcia dowolnego przycisku.
Zastosowanie w drabince rezystorów oporników o rezystancji 100Ω powoduje, że na wejściu analogowym (w tym przypadku A5) rejestrowane są następujące wartości napięcia:
- 1-szy rezystor - ok. 90,
- 2-gi rezystor - ok. 530,
- 3-ci rezystor - ok. 690,
- 4-ty rezystor - ok. 770,
- 5-ty rezystor - ok. 820.