Auf und nieder, immer wieder
Wir haben ein Problem. Und zwar laufen unsere Programme immer nur ein einziges Mal von oben nach unten durch. Das bringt entscheidende Nachteile mit sich. Was zum Beispiel, wenn wir die LED blinken lassen wollen? Sollen wir sie dann etwa im Programmcode immer und immer wieder aus- und wieder anschalten?
gpio.output(18, gpio.HIGH)
time.sleep(2)
gpio.output(18, gpio.LOW)
time.sleep(2)
Da das viel zu umständlich und doof wäre, haben sich die Urväter der Programmiersprachen etwas ganz Kluges einfallen lassen. Ich präsentiere:
Die while-Schleife
Genau wie die if-Anweisung kann die while-Schleife eine Bedingung prüfen. Der Unterschied ist, dass die while-Schleife dann immer und immer wieder ausgeführt wird, bis die Bedingung nicht mehr wahr ist. Wenn du dich erinnerst, die if-Anweisung hat den Code nur einmal ausgeführt. Generell sind sich die if-Anweisung und die while-Schleife sehr ähnlich. Schauen wir uns die Schleife einmal genauer an:
sonne = "scheint"
while sonne == "scheint":
print("Auf zum Strand")
Sieht ja fast genauso aus! Aber eine Sache solltest du immer beachten. Da sich die Schleife immer wieder wiederholt, ist es notwendig, dass du eine Stelle im Code einbaust, die die Schleife beenden kann. Sonst würde sie ja die ganze Zeit weiter laufen, bis das Programm oder sogar der ganze Raspberry Pi abstürzt. In unserem Beispiel müssen wir die Sonne also untergehen lassen. Ganz wichtig ist, dass du nicht den Doppelpunkt :
am Ende der while-Schleife vergisst. Denn diesen braucht das Programm, damit klar ist, was noch alles zur Schleife gehört und was ausgeführt werden soll.
import RPi.GPIO as gpio
import time
gpio.setmode(gpio.BCM)
gpio.setup(18, gpio.OUT)
blinken = "ja"
while blinken == "ja":
gpio.output(18, gpio.HIGH)
time.sleep(2)
gpio.output(18, gpio.LOW)
blinken = input("Nochmal? ja oder nein? ")
Jetzt noch ein bisschen Zauber-Code:
Du ahnst ja gar nicht, wie cool dieses Programm ist. Zeile 1 bis 5 sind ja schon alte Kamellen, Zeile 7 zwar auch, aber in diesem Fall ist diese Variable doch nochmal super spannend. Ihr Inhalt wird nämlich auf „ja“ gesetzt, und wie du in Zeile 9 sehen kannst, wird dieser Inhalt in der while-Schleife geprüft. Da der Inhalt im ersten Durchlauf, wie festgelegt, „ja“ lautet, wird die Schleife ausgeführt und die LED geht kurz an. In Zeile 13 hast du nun die Möglichkeit, den Inhalt der Variable namens „blinken“ zu ändern.
Am Ende der while-Schleife wirst du also gefragt, ob die LED noch einmal blinken soll. Wenn du deine Eingabe getätigt und mit Enter bestätigt hast, springt der Programmcode wieder zur Zeile 9. An die Stelle der while-Schleife also, an der die Bedingung auf ihre Wahrheit geprüft wird. Je nachdem wofür du dich entschieden hast, wird die while-Schleife nochmal ausgeführt oder das Programm läuft normal weiter.