Make Magazin 5/2020
S. 130
Make
Know-how

Was tun, wenn der Arduino bei einem Ihrer Projekte an akutem Pin-Mangel leidet? Wir wissen nicht, was Ihr Arzt empfiehlt. Wir empfehlen die trickreiche Doppelnutzung der vorhandenen Anschlüsse.

von Martin Ossmann

Taster und LED an einem Pin

Manchmal reichen die GPIO-Pins von einem Board wie dem Arduino nicht aus. Wenn man eine LED ansteuern und einen Taster abfragen will, kann man beide Aufgaben mit nur einem einzigen Pin und geschickter Programmierung erledigen, wie dieser Artikel zeigt. Einziger Nachteil dabei ist, dass die LED kurz erlischt, während man den Taster drückt. Das fällt aber in der Praxis kaum auf.

1 So muss ein Pin beschaltet werden, damit er zugleich als Ein-und Ausgang verwendet werden kann. 

Die Verdrahtung 1 ist dabei erstaunlich einfach: Die Ausgangsstufe des GPIO-Pins ­bilden im Inneren des Arduinos zwei Tran­sistoren T1 und T2. Die Eingangsfunktion wird durch einen Schmitt-Trigger S2 realisiert. Bild 2 zeigt Beschaltung des Arduinos im Probeaufbau. 

Geschickter Wechsel zwischen In- und Output

2 Neben Taster und LED mit Vorwiderstand ist nur ein zusätzlicher Widerstand zur doppelten Pin-Nutzung notwendig. Den Rest erledigt die Software.

Um die LED zum Leuchten zu bringen, schaltet man die GPIO-Funktion auf INPUT. Beide Transistoren sind dann im nichtleitenden Zustand. Die LED wird in dieser Phase über R1 und R2 mit Strom versorgt. Bei den angege­benen Werten ergibt sich ein Strom durch die LED von 5 mA, genug, um sie zum Leuchten zu bringen.

Um die LED zum Erlöschen zu bringen, schaltet man den GPIO auf Output und gibt ein LOW aus. Dabei wird Transistor T2 in den leitenden Zustand gebracht. Die LED liegt dann mit einem Pol an GND, am anderen herrscht lediglich die an der Sperrschicht von T2 abfallende Spannung und die reicht nicht, um die LED zum Leuchten zu bringen.

Ob der Taster gedrückt wird, kann man feststellen, wenn die LED leuchtet. Das heißt, um den Taster abzufragen, schaltet man kurz die LED ein und fragt dann den Eingangspin ab. Diese Abfrage dauert weniger als 10 Mikrosekunden. Danach schaltet man die LED wieder für mindestens 1 Millisekunde in den ursprünglich gewünschten Zustand. Ist das aus, bewirkt die Pinabfrage nur ein Leuchten in einem hundertstel der Zeit (1 Mikrosekunde: 1 Millisekunde). Die LED scheint dann aus zu sein. Ist der ursprüngliche Zustand ein, spielt das ohnehin keine Rolle. Diese Leuchtdauer ist zu kurz, um sie wahrzunehmen.

Diese Grundfunktionalitäten sind in 3 dargestellt.

In 4 sieht man ein Beispielprogramm mit einer sehr einfachen Aufgabe, die die Arbeitsweise dieses Tricks aber gut veranschaulicht. Wenn die Taste gedrückt wird, fängt die LED an zu blinken. Wenn man den Taster nochmal drückt, hört die LED auf zu blinken.

Wie man sieht, kann man die Doppelfunktion des Pins gut benutzen, um Tastaturfunktionalitäten mit Rückmeldung per LED mit nur einem GPIO-Pin realisieren. Selbstverständlich lässt sich diese Schaltung auch an mehreren Pins gleichzeitig verwenden. So kann man relativ großzügige Tastaturen und LED-Anzeigen selbst mit einem Arduino nano verwirklichen.

make-magazin.de/xcu5