Ich mache ein Projekt und benutze Arduino als Prototyp, ich muss 10 Drucktasten (zusammen mit mehr Dingen) verwenden und ich habe nicht genug Pins.
Eine Lösung, die ich mir vorstellen könnte, besteht darin, die analogen Stifte zu verwenden und sie jeweils für zwei Drucktasten zu verwenden.
simulieren Sie diese Schaltung - Schaltplan erstellt mit CircuitLab
Auf diese Weise kann ich den Pin A0 ablesen und herausfinden, welcher von ihnen gedrückt wird, indem ich prüfe, ob die Spannung 5 V oder die Hälfte davon beträgt.
Ist das eine gute Idee? Die verschiedenen Tasten dürfen NIEMALS gleichzeitig gedrückt werden, was das einzige Problem ist, an das ich denken kann.
Gibt es bessere Wege?
Antworten:
Warum mehrere analoge Pins für jeweils zwei Schalter verschwenden, wenn Sie eine beliebige Anzahl von Tasten auf einem einzelnen analogen Pin ausführen können?
Zwei Möglichkeiten. Einer ist in Serie, der andere ist parallel.
So sind einige Audiosteuerungen für Autolenkräder. Und wie einige der älteren iPod-Inline-Controller funktionieren.
Je nachdem, welche Widerstände Sie verwenden und wie empfindlich Ihr Analogeingang ist, können Sie alle 10 Tasten an einem einzigen Pin anschließen, wenn Sie mehrere Tasten gleichzeitig drücken müssen.
quelle
Das würde funktionieren, aber ein besserer Weg ist mit einer Matrix . Dies ist das gleiche Konzept wie beim Multiplexen von LEDs mit einer Matrix, jedoch mit Schaltern.
Dies ist eine 2x2 Matrix. Eine nützliche Matrix ist größer, da Sie bei dieser Größe keine Pins sparen, wenn Sie die Schalter einzeln verbinden.
Mit einer 3x3-Matrix können Sie 9 Schalter erhalten. Sie benötigen 10, also können Sie entweder eine weitere Zeile oder eine weitere Spalte hinzufügen und 12 Schalter unterstützen oder einfach den 10. Schalter an einen eigenen Pin anschließen.
Der Vorteil hierbei ist, dass Sie digitales IO verwenden können, das billiger und in der Regel umfangreicher ist als analoges IO. Ein Schieberegister ist eine kostengünstige Möglichkeit, mehr digitale E / A hinzuzufügen, wenn Sie nicht mehr ausreichen.
Wenn Sie noch weniger Stifte möchten, können Sie für eine gewisse Erhöhung der Komplexität Charlieplexing verwenden . Sie müssen zusätzlich zu Ihren Schaltern Dioden hinzufügen, und diese Dioden kosten wahrscheinlich so viel wie ein Schieberegister. Wenn jedoch die Kosten nicht Ihr Hauptanliegen sind, kann dies einen Vorteil haben. Mit dieser Methode können Sie alle Schalter (bis zu 12) mit vier Pins auslesen.
quelle
Der Analogeingang ist ein gültiger Ansatz. Es sollten mehrere Tasten vorhanden sein. Ich würde auch gerne vorschlagen, einen IO-Expander-Chip wie den MCP23017 zu verwenden . Es verfügt über 16 Pins, die als Ein- und Ausgänge dienen können, und wird über zwei Pins mit I2C gesteuert. Adafruit hat eine Arduino-Bibliothek dafür.
quelle
Ja, das scheint eine gute Idee zu sein, aber auf jeden Fall werde ich eine Alternative vorschlagen, die mir gerade in den Sinn gekommen ist.
Wenn Sie Zugriff auf Logikgatter haben, können Sie über die Boolesche Logik viele
n
Schaltflächenceil(log2(n + 1))
Pins zuordnen. Wenn Sie beispielsweise 4 Schaltflächen, aber nur 2 Stifte haben, können Sie eine Konfiguration wie die folgende erstellen:Das heißt,
button0
gedrückt haben solltepin0
undpin1
niedrig;button1
,pin0
Niedrig undpin1
hoch;button2
,pin0
Hoch einpin1
niedrig; undbutton3
,pin0
undpin1
hoch.Daraus würden sich die folgenden Booleschen Ausdrücke ergeben
Eine Zuordnung von 4 Tasten zu 2 Pins könnte somit mit nur 2 ODER-Gattern realisiert werden. Sie benötigen jedoch einen zusätzlichen Pin und eine zusätzliche Logik, um anzuzeigen, ob überhaupt eine Taste gedrückt wird.
Natürlich wird es immer noch Probleme geben, wenn mehrere Tasten gleichzeitig gedrückt werden.
Wenn Sie dennoch mit dem Widerstandsansatz weitermachen möchten, sollten Sie größere Werte für die Widerstände verwenden als 100 Ohm, da 5 V durch Widerstände in der Größenordnung von 100 Ohm einen Strom in der Größenordnung von 10 mA ergeben würden von unnötig hoch. Ich denke, vernünftigere Werte wären 10 kOhm oder 47 kOhm.
quelle
Die folgende Seite kann nützlich sein:
http://txapuzas.blogspot.co.uk/2010/07/papertecladoanalogico-varios-pulsadores.html
Es ist auf Spanisch geschrieben, aber die wesentlichen Punkte sind grafisch dargestellt. Ich denke, es ist eine sehr gute Idee für Sie.
In diesem Video können Sie das Endergebnis sehen, die Skizze ist auf der Seite auch gekapselt, um die Implementierung in Ihren Projekten zu vereinfachen
Youtube-Video: Tastatur mit 10 Tasten an einem einzigen Stift
Hier ist ein Schema von der obigen Seite:
quelle