Mit dem Tutorial Raspberry PI Kit #1: Smart Plant Kit “Schlaue Pflanze” habe ich den ersten Beitrag zu meiner neuen Reihe zum Einplatinencomputer Raspberry PI veröffentlicht.
Für dieses und einige weitere Tutorials verwende ich die elektronischen Komponenten aus dem oben genannten Set.
In diesem Beitrag möchte ich zeigen, wie man LEDs am Raspberry Pi zum Blinken bringen kann.
Bezug
Je nach verwendeter LED wird noch ein Vorwiderstand benötigt. In diesem Tutorial verwende ich die blauen LEDs aus dem Set “Smart Plant Kit “Schlaue Pflanze” von Reichelt-Elektronik, welche mit 3,3V betrieben werden und somit bestens für den Raspberry Pi geeignet sind, da dieser über eine 3,3V (und 5V) Spannungsversorgung verfügt.
Die LEDs kann man zum Beispiel über ebay.de für knapp 3€* erwerben. Wenn man das Glück hat und einen Conrad Shop bei sich in der Nähe hat, so kann man dort relativ günstig diese vor Ort erwerben (mit Versandkosten wäre dieses deutlich zu teuer).
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Aufbau und Schaltung
Für die nachfolgende Schaltung verwende ich
- 1x Raspberry Pi, Model B (rev. 1)
- 1x LED, blau, 5 mm
- 2x Breadboardkabel, männlich – weiblich, 20 cm
- 1x Breadboard, 400 Pin
Die Anode (+ Pol, langes Beinchen, abgeflachte Seite am Gehäuse) der LED wird mit einem freien GPIO Pin verbunden und die Kathode (-, kurzes Beinchen) wird mit GND verbunden. Hier ist wie Eingangs erwähnt darauf zu achten das ggf. ein Vorwiderstand eingesetzt werden muss! (Bei der Verwendung einer blauen, 3,3V LED ist dieses nicht notwendig.)
Natürlich kann man dieses auch mit dem neuen Raspberry Pi 4, oder 3 machen. Jedoch habe ich dieses Modell hier ohne Benutzung und diese kleine Aufgabe löst das alte Modell genauso gut wie die neuen.
Quellcode
Ein Python Skript wird immer von oben nach unten abgearbeitet, d.h. wir könnten in unserem Fall kann das Programm wie folgt sein.
import RPi.GPIO as GPIO import time GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(4,GPIO.OUT) while True: GPIO.output(4,True) time.sleep(1) GPIO.output(4,False) time.sleep(1)
Was macht der Code?
Gehen wir nun den Quellcode Zeile für Zeile durch.
Zeile 1 – import RPi.GPIO as GPIO
Diese Zeile läd die Bibliothek RPi.GPIO als Name GPIO, statt GPIO könnten wir einen beliebigen anderen Namen wählen.
Zeile 2 – import time
Diese Zeile läd die Bibliothek time, damit wir in unserem Programm eine Pause einlegen können.
Zeile 4 – GPIO.setwarnings(False)
Damit deaktivieren wir die Warnings welche ausgeben werden wenn wir zbsp. unser Programm wärend der Ausführung mit Strg+C abbrechen.
Zeile 5 – GPIO.setmode(GPIO.BCM)
Mit dem Wert GPIO.BCM wird definiert dass, die Pin Bezeichnungen GPIO4, GPIO14 usw. verwendet werden, als alternative kann man hier GPIO.BOARD nutzen dieses sorgt dann unter anderem dafür das die Pin Bezeichnungen P1, P4, P6 usw. genutzt werden.
Zeile 6 – GPIO.setup(4,GPIO.OUT)
Die Zeile 6 definiert den GPIO Pin 4 als Ausgang (Output), da ein GPIO Pin sowohl als Eingang und als Ausgang fungieren kann, müssen wir immer definieren als was dieser Pin genutzt werden soll.
Zeile 8 – while True:
In der Zeile 8 starten wir unsere Endlosschleife. Dieses machen wir indem wir der While Schleife einfach den Parameter True übergeben. Es ist darauf zu achten das der nachfolgende Quellcode mit einem Tab eingerückt wird!
Zeile 9 – GPIO.output(4,True)
Zum aktivieren einer LED müssen wir lediglich den GPIO Pin aktivieren, dieses erledigen wir indem wir der Funktion “output” als Parameter den Pin unserer LED übergeben sowie den gewünschten Status. In diesem Fall ist es True damit der GPIO Pin auf HIGH gesetzt wird.
Zeile 10 – time.sleep(1)
Um nun ein Blinken zu erzeugen, müssen wir eine kleine Pause einlegen. Dazu nutzen wir die zuvor definierte time Bibliothek.
Mit der Funktion “sleep” können wir definieren wielange das Programm pausieren soll, dabei kann eine Gleitkommazahl eingegeben werden. Die Zahl 1 steht hier für 1 Sekunde, d.h. wenn wir eine halbe Sekunde pausieren möchten, müssen wir “0.5” eingeben.
Zeile 11 – GPIO.output(4,False)
Nachdem wir nun eine Sekunde pause gemacht haben wollen wir die LED deaktivieren, dieses machen wir indem wir der bekannten Funktion “output” ein False für den Status übergeben.
Zeile 12 – time.sleep(1)
Da unsere Schleife sofort wieder von vorne beginnen würde und unsere LED dann wieder aktiv wäre müssen wir zum Schluss erneut eine kleine Pause einlegen.
Erweitern um Funktionen für eine bessere Lesbarkeit
Dieses würde schon so funktionieren, jedoch wollen wir das mal etwas lesbarer machen und uns zwei Funktionen erschaffen welche erkenntlich machen was für die Initialisierung von Daten zuständig ist und was die eigentliche Ablaufsteuerung ist. Wenn du bereits Erfahrung mit Arduinos gesammelt hast dann werden dir hier sicherlich zwei passende Funktionen einfallen.
import RPi.GPIO as GPIO import time def setup(): GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(4,GPIO.OUT) def loop(): GPIO.output(4,True) time.sleep(1) GPIO.output(4,False) time.sleep(1) setup() while True: loop()
Video
Abbrechen eines Programmes
Um nun das Programm zu beenden muss man auf der Konsole lediglich die Tastenkombination Strg+C betätigen. In unserem Fall haben wir keine Routine implementiert welche dieses Ereignis behandelt somit wird auf der Konsole eine Fehlermeldung angezeigt.
pi@raspberrypi:~/led_wechselblinken $ sudo python3 led_wechselblinken.py ^CTraceback (most recent call last): File "led_wechselblinken.py", line 30, in <module> loop() File "led_wechselblinken.py", line 19, in loop blink(led3) File "led_wechselblinken.py", line 25, in blink time.sleep(0.25) KeyboardInterrupt pi@raspberrypi:~/led_wechselblinken $
Wie man diese Fehlermeldung unterdrückt oder besser noch behandelt erläutere ich in einem späteren Tutorial.
Wechselblinken
Nachdem wir nun wissen wie man eine LED am Raspberry PI betreiben und zum blinken bringen kann, möchten wir nun 3 LEDs anschließen und jeweils nacheinander zum blinken bringen.
Für diese Schaltung benötigst du:
- 3x, LED, 5mm, blau,
- 3x, Breadboardkabel, 20cm, männlich – weiblich,
- 3x, Breadboardkabel, 20cm, männlich – männlich,
- 1x Breadboard, 400 Pin,
- 1x Raspberry PI
Alle Bauteile (außer den Raspberry PI) findest du in dem Set Smart Plant Kit “Schlaue Pflanze” von Reichelt-Elektronik.
Aufbau der Schaltung
Die Schaltung für 3 LEDs ist quasi 3 mal die Schaltung für eine LED.