Der Taster beim Unicorn Shield Python

Der Taster beim Unicorn Shield Python Titelbild

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. Den Taster findet ihr bei eurem Einhorn oben beim linken Ohr. Du kannst natürlich gern mal ausprobieren, ob der auch funktioniert. Bis wir den Taster programmiert haben, sollte allerdings erstmal nichts passieren.

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

import unicornshield as unicorn
import time

while True:
  if unicorn.buttonPressed() == True:
    unicorn.leftEyeOn()
    unicorn.rightEyeOn()
  else:
    unicorn.leftEyeOff()
    unicorn.rightEyeOff()

Wenn wir uns das Programm ansehen gibt es mit unicorn.buttonPressed() eine neue Funktion, die wir benutzen können. Diese Funktion gibt uns einen sogenannten Rückgabewert und dieser Wert hängt logischerweise davon ab, ob der Taster oben auf dem Ohr gedrückt ist oder nicht. Wenn der Taster gedrückt ist, kommt der Rückegabewert True und wenn nicht dann der Wert False. Beachte, dass hier der erste Buchstabe am Anfang großgeschrieben wird, weil es sich dabei nicht um Texte (Strings) sondern um ein Boolean handelt. (Ein Boolean kann nur zwei verschiedene Werte annehmen: True oder False. Aber das ergibt ja auch Sinn im Zusammenhang mit dem Taster. Dieser kann entweder gedrückt sein oder halt nicht. Halb drücken geht ja nicht.) Ob der Taster gedrückt wurde oder nicht, wissen wir durch die Verbindung des Unicorn Shields mit den GPIO-Pins am Raspberry Pi. Diesen können nämlich nicht nur LEDs an- oder wie ausschalten, sondern auch messen, ob Strom durch einen Taster fließt. Der Taster besteht aus zwei Metallplättchen, die durch eine Feder getrennt sind. Nur wenn der Taster nach unten gedrückt wird, verbinden sich diese beiden Metallplättchen und es gibt einen geschlossenen Stromkreis.

Die zweite Neuerung in diesem Programmcode kannst du in Zeile 9 betrachten. Da, wo wir vorher immer Vergleiche angestellt haben und die while-Schleife nur ausgeführt wurde, wenn dieser Vergleich wahr war, sagen wir der while-Schleife nun einfach von Anfang an, dass sie wahr sein soll. Fantastisch, oder? Sie läuft also den lieben langen Tag weiter, bis wir das Programm beenden. So einfach ist das. In der while-Schleife in Zeile 5 gibt es dann eine if-Bedingung, in der übersetzt drin steht: Wenn der Rückgabewert von der Funktion .buttonPressed() gleich True ist, dann führe alles aus, was eingerückt ist. Dass die Augen auf Kommando leuchten, funktioniert schon einmal gut. Wir wollen aber auch, dass die Augen nicht mehr leuchten, wenn der Taster nicht mehr gedrückt wird. Dafür gibt es in Zeile 8 eine else: Bedingung. Die else Bedingung ist immer dann wahr, wenn die voherige if-Bedingung nicht wahr gewesen ist. In diesem Fall werden die eingerückten Zahlen in Zeile 9 und 10 immer dann ausgeführt, wenn in Zeile 5 der Rückgabewert von .buttonPressed() nicht True ist.

Damit du dir den Funktionsnamen .buttonPressed() besser merken kannst, Button ist englisch für Taster und pressed ist englisch für gedrückt.

Wenn du vorerst 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 die Augen von dem Einhorn so programmieren, das dass linke Auge immer leuchtet wenn der Taster gedrückt ist und das rechte Auge immer wenn der Taster nicht gedrückt ist?

Noch Fragen oder Feedback?

Bevor du eine Frage stellen kannst musst du dich zuerst Anmelden oder Regestrieren!