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 PiAnschlüsse an der LED
GPIO 18Langes Bein grüne LED
GPIO 23Langes 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!