Wie lässt man zwei LEDs am Raspberry Pi abwechselnd blinken?
Man kann die elektronischen Bauteile auf dem Breadboard auch ohne T-Cobbler anschließen. Dann benötigt man jedoch für die Verbindung zur J6-Steckerleiste des Raspberry Pi Steckkabel (engl. jumper wire) vom Typ female – male, also Buchse für den Raspberry Pi und Stecker für das Breadboard.
Der Programmcode (abwechselnd blinkende LED am Raspberry Pi)
# Ab hier kann der Code direkt in die Python Software kopiert werden.
# Schwarz, bunt = Code und Grau = Erklärungen
#Wir starten mit dem Importieren der Programm-Module
import RPI.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM) # Wir stellen den Modus auf BCM ein
GPIO.setup(23,GPIO.OUT) #Pin 23 ist ein Ausgang.
GPIO.setup(24,GPIO.OUT) #Pin 24 ist ein Ausgang.
# Hier beginnt die Schleife
try:
while True: #While-Schleife damit das Programm durchgehend läuft
GPIO.output(23,GPIO.HIGH) # Schaltet die LED an Pin 23 an.
GPIO.output(24,GPIO.LOW) # Schaltet die LED an Pin 24 aus.
time.sleep(1) # Warte 1 Sekunde
GPIO.output(23,GPIO.LOW) # Schaltet die LED an Pin 23 aus.
GPIO.output(24,GPIO.HIGH) # Schaltet die LED an Pin 24 an.
time.sleep(1)
# Hier am Ende springt das Programm an den Start des Loop-Teils. Also…
# …schalte die LED an Pin 23 an.
# … usw… usw… usw…
except KeyboardInterrupt: # Mit STRG+C unterbrechen wir das Programm
print ("Beendet”) # Schreibe “Beendet” in das Shell-Fenster
GPIO.cleanup() # Beende das Programm
Im Beispiel Nr. 01 Blinkende LED hatten wir die Endlosschleife mit while True und Einrückung der folgenden Codezeilen realisiert. Wer diese Endlosschleife mit der Tastenkombination Strg-C abgebrochen hat, wird bemerkt haben, dass er erstens eine Fehlermeldung erhält und zweitens ggf. die LED weiterhin leuchtet. Um diese beiden unerwünschten Effekte zu verhindern, sind in diesem Beispiel einige Codezeilen ergänzt worden. Vor der while True-Schleife wird die Zeile try: eingefügt. Der Doppelpunkt führt zum Einrücken der gesamten Schleife. Wenn in dieser Schleife beim Programmablauf ein Fehler auftritt, erfolgt keine Fehlermeldung, sondern das Programm wird bei except KeyboardInterrupt: fortgesetzt. Mit dem print-Befehl wird das Programmende in der Python Shell (unteres Fenster bei Thonny) ausgegeben, mit GPIO.cleanup() werden die GPIOs (also unsere LEDs) ausgeschaltet und freigegeben für andere Zwecke.
Beispiel: Ampelzyklus am Raspberry Pi
Hier ein Lösungsvorschlag für einen Ampelzyklus unter Verwendung des Moduls gpiozero: