Robię jakiś projekt i używam Arduino do prototypowania, muszę użyć 10 przycisków (wraz z innymi rzeczami) i nie mam wystarczającej liczby pinów.
Jednym rozwiązaniem, o którym mogłem pomyśleć, jest użycie pinów analogowych i użycie każdego z nich do dwóch przycisków, coś takiego:
symulacja tego obwodu - Schemat utworzony przy użyciu CircuitLab
W ten sposób mogę odczytać styk A0 i dowiedzieć się, który z nich jest popychany, sprawdzając, czy napięcie wynosi 5 V czy połowa tego.
Czy to dobry pomysł? Poszczególne przyciski NIGDY nie powinny być naciskane jednocześnie, co jest jedynym problemem, o którym mogę myśleć.
Czy są lepsze sposoby?
Odpowiedzi:
Po co marnować wiele pinów analogowych na dwa przełączniki, skoro można wykonać dowolną liczbę przycisków na jednym pinie analogowym?
Dwa sposoby na zrobienie tego. Jeden jest w szeregu, drugi jest równoległy.
Tak wyglądają niektóre elementy sterowania dźwiękiem w kierownicy samochodu. I jak działają niektóre starsze wbudowane kontrolery ipod.
W zależności od używanych rezystorów, jeśli potrzebujesz nacisnąć wiele przycisków jednocześnie i jak wrażliwy jest twój analog, możesz mieć wszystkie 10 przycisków na jednym pinie.
źródło
To by działało, ale lepszym sposobem jest użycie matrycy . Jest to ta sama koncepcja, co multipleksowanie diod LED z matrycą, ale z przełącznikami.
To jest matryca 2x2. Przydatna matryca jest większa, ponieważ przy tym rozmiarze nie oszczędzasz żadnych pinów na osobne podłączanie przełączników.
Dzięki matrycy 3x3 można uzyskać 9 przełączników. Potrzebujesz 10, więc możesz albo dodać jeszcze jeden wiersz, albo jeszcze jedną kolumnę i obsługiwać 12 przełączników, lub po prostu umieścić 10. przełącznik na swoim własnym pinie.
Zaletą jest to, że można korzystać z cyfrowego IO, które jest tańsze i zwykle bardziej obfite niż analogowe IO. Rejestr przesuwny jest tanim sposobem na dodanie bardziej cyfrowego IO, jeśli zabraknie.
Jeśli chcesz jeszcze mniej pinów, możesz, dla pewnego wzrostu złożoności, użyć charlieplexing . Będziesz musiał dodać diody oprócz przełączników, a te diody prawdopodobnie kosztują tyle, ile rejestr przesuwny. Jeśli jednak koszt nie jest twoim głównym zmartwieniem, może mieć pewną przewagę. Dzięki tej metodzie możesz odczytać wszystkie swoje przełączniki (maksymalnie 12) za pomocą czterech pinów.
źródło
Wejście analogowe jest poprawnym podejściem, powinieneś być w stanie mieć na nim kilka przycisków. Chciałbym również zasugerować użycie układu ekspandera IO, takiego jak MCP23017 . Ma 16 pinów, które mogą być wejściami wyjściowymi i sterowane przez I2C za pomocą dwóch pinów. Adafruit ma do tego bibliotekę Arduino.
źródło
Tak, wydaje się to dobrym pomysłem, ale w każdym razie zamierzam zaproponować alternatywę, która właśnie przyszła mi do głowy.
Jeśli masz dostęp do bramek logicznych, możesz zmapować wiele
n
przycisków doceil(log2(n + 1))
pinów za pomocą logiki logicznej. Na przykład, jeśli masz 4 przyciski, ale tylko 2 piny, możesz utworzyć konfigurację taką:To znaczy,
button0
presja powinna miećpin0
ipin1
nisko;button1
,pin0
niski ipin1
wysoki;button2
,pin0
wysoki ipin1
niski; abutton3
,pin0
ipin1
na wysokim poziomie.Z tego wynikną następujące wyrażenia boolowskie
Odwzorowanie 4 przycisków na 2 piny można zatem zrealizować tylko z 2 bramkami OR. Potrzebny byłby jednak dodatkowy pin i trochę logiki, aby wskazać, czy którykolwiek przycisk jest w ogóle naciskany.
Oczywiście nadal będą występować problemy, jeśli kilka przycisków zostanie naciśniętych jednocześnie.
Ponadto, jeśli nadal będziesz stosować podejście opornikowe, rozważ użycie większych wartości na opornikach innych niż 100 omów, ponieważ 5 V przez rezystory rzędu 100s omów dałoby prąd rzędu 10s mA, co jest miłe niepotrzebnie wysokiej. Wydaje mi się, że bardziej rozsądne wartości to 10k Ohm lub 47k Ohm.
źródło
Przydatna może być następująca strona:
http://txapuzas.blogspot.co.uk/2010/07/papertecladoanalogico-varios-pulsadores.html
Jest napisane w języku hiszpańskim, ale najważniejsze są naszkicowane, myślę, że to dla ciebie bardzo dobry pomysł.
Na tym filmie można zobaczyć końcowy wynik, szkic znajduje się również na stronie, zamknięta funkcja ułatwia wdrażanie w projektach
YouTube wideo: 10 klawiszy klawiatury na jednym pinie
Oto schemat z powyższej strony:
źródło