Zwei LEDs
Schauen wir uns die if-Anweisung mal in Aktion an. Zunächst mal ein Schaltplan mit zwei LEDs unterschiedlicher Farbe. Achte wie schon vorhin darauf, das kurze Bein an Ground anzuschließen.
Anschlüsse am Pi | Anschlüsse an der LED |
GPIO 18 | Langes Bein grüne LED |
GPIO 23 | Langes Bein gelbe LED |
GND (Ground) | Kurze Beine der LEDs + 220Ω |
Wie könnte man jetzt wohl den Code gestalten, wenn wir darüber entscheiden wollen, welche LED leuchten soll? Was wäre, wenn wir eine Variable nehmen und dieser mit Hilfe der uns bekannten Funktion input() eine Farbe zuweisen und dann mit einer if-Anweisung prüfen, welche Farbe wir gewählt haben? Das probieren wir doch gleich mal aus:
import RPi.GPIO as gpio
import time
gpio.setmode(gpio.BCM)
gpio.setup(18, gpio.OUT)
gpio.setup(23, gpio.OUT)
farbe = input("gelb oder grün? ")
if farbe == "gelb":
gpio.output(23, gpio.HIGH)
time.sleep(2)
gpio.output(23, gpio.LOW)
if farbe == "grün":
gpio.output(18, gpio.HIGH)
time.sleep(2)
gpio.output(18, gpio.LOW)
gpio.cleanup()
Zeile 1 bis 6 kommen uns ja schon bekannt vor. Die benötigten Bibliotheken werden eingebunden, wir legen die Pin-Belegung fest. Wie im vorherigen Beispiel mit einer LED legen wir fest, welche GPIO-Pins wir nutzen möchten, nur eben diesmal für zwei LEDs.
In Zeile 8 kommt der erste spannende Part. Nachdem wir die Variable farbe erstellen, weisen wir ihr eine Zeichenkette zu, die wir später selbst eingeben können. Dazu nutzen wir die input()-Funktion. Als Parameter übergeben wir dieser Funktion einen String, der dann im Terminal ausgegeben wird. Was wir dann eingeben und mit Enter bestätigen wird, während das Programm läuft, in der Variable gespeichert. Da du zwei LEDs hast, fragen wir bei der Gelegenheit auch gleich nach den beiden Möglichkeiten.
In Zeile 10 dann der erste große Auftritt der if-Anweisung. Hier wird nun der Inhalt der Variable farbe abgefragt. Je nachdem ob du gelb oder grün eingegeben hast, wird der richtige Teil Code ausgeführt. Gibst du weder gelb noch grün, sondern zum Beispiel Wackelpudding ein, wird keine LED leuchten, da beide if-Anweisungen nicht wahr sind. Der Vergleich wird mit dem Operator „==“ ausgeführt. Auch wenn dieser Operator viele Ähnlichkeiten mit dem Zuweisungszeichen „=“, sind sie doch sehr unterschiedlich!