Taster

Schleifen sind natürlich nicht nur dafür da, um deine Schuhe fest an deinen Füßen zu halten und um irgendwelche LEDs wieder und immer wieder blinken zu lassen. Hast du dich zum Beispiel mal gefragt, wie deine PC-Maus funktioniert?

Das Betriebssystem prüft zu jeder Zeit, ob du die Maus bewegst oder ob du eine Maustaste anklickst. Und wie wir gelernt haben, ist die beste Lösung für eine immer wiederkehrende Überprüfung eine Schleife.

In diesem Kapitel beschäftigen wir uns mit dem Taster. Genau wie eine PC-Maus muss natürlich auch ein Taster immer wieder überprüfen, ob er gedrückt wurde. Und so grüßt täglich die while-Schleife.

Anschlüsse am PiAnschlüsse an der LED
GPIO 18Langes Bein LED
GND (Ground)Kurzes Bein LED + 220Ω Widerstand
GPIO 23Button 1 Seite
GND (Ground)Button 1 Seite + 10 000Ω Widerstand

Folgender Programmcode bringt Licht in die Welt des Taster-Drückens.

import RPi.GPIO as gpio
import time

gpio.setmode(gpio.BCM)

gpio.setup(23,gpio.IN,pull_up_down=gpio.PUD_UP)
gpio.setup(18, gpio.OUT)

while True:
    buttonPressed = gpio.input(23)
    if buttonPressed == 1:
        gpio.output(18, gpio.LOW)
    if buttonPressed == 0:
        gpio.output(18, gpio.HIGH)

Genau zwei Dinge in diesem Programm sind neu. Die erste neue Angelegenheit findest du in Zeile 6. Normalerweise haben wir mit Hilfe der gpio.setup()-Funktion ja die einzelnen Pins für die LEDs bereit gemacht, damit wir Strom aus ihnen herausschicken können. Das mit den Knöpfen ist erwartungsgemäß etwas komplizierter.

In diesem Fall muss der Pin nämlich mehr leisten, als einfach nur Strom zu liefern. Der Pin muss in dieser Situation nämlich prüfen, ob der Knopf gedrückt ist oder eben nicht. Und genau das kann der Pin leisten, wenn wir ihn so wie in Zeile 6 einstellen. Je nachdem, ob der Knopf gedrückt wird oder nicht, wird dem Pin ein Zahlenwert zugewiesen. Ist der Knopf gedrückt, hat der Pin den Zahlenwert 1 zugewiesen. Ist er nicht gedrückt, den Zahlenwert 0. Merk dir das für gleich.

Die zweite Überraschung in diesem Programmcode kannst du in Zeile 9 betrachten. Wo wir vorher immer Vergleiche angestellt haben und die while-Schleife nur ausgeführt wurde, wenn dieser Vergleich wahr ist, sagen wir der while-Schleife nun einfach von Anfang an, dass sie wahr sein soll. Sie läuft also den lieben langen Tag weiter, bis wir das Programm beenden. So einfach ist das. Der Clou kommt jetzt. In der while-Schleife weisen wir einer Variable namens buttonpressed den Wert des GPIO-Pins zu. Wie du dir ja vorher merken solltest ist dieser Wert immer unterschiedlich. Je nachdem ob der Knopf gedrückt ist oder nicht. So kann im nächsten Schritt die richtige if-Anweisung ausgewählt werden.

Wenn du genug von dem Programm hast, kannst du es mit Strg + c beenden. Oder falls du eine eine andere Tastatur hast, mit Cmd/Ctrl + c.

Jetzt bist du dran! Kannst du zwei Buttons anschließen und jeden mit einer anderen LED verbinden? Die Lösung findest im Zweifelsfall online. Tipp: Du brauchst nicht mehr als eine while-Schleife.