Raspberry Pi: LED ansteuern (GPIO)

Das Ansteuern von LEDs ist der Klassiker jeder elektrischen Schaltung. Nicht nur weil eine LED kostengünstig ist, sondern diese Steuerung auch als Grundlage von zahlreichen weiteren Projekten dient.

In dieser Anleitung werde ich nur die Codezeilen einfügen und anhand von Beispielen erklären. Das Erstellen und Ausführen eines Phyton Skriptes habe ich bereits in einer anderen Anleitung ausführlich erklärt. Python Skript erstellen und ausführen.

Was benötigen wir?

ProdukteShop Link
Raspberry PiKauf Empfehlung
Netzteil (für den Pi)Kauf Empfehlung
Breadboard (Steckplatine) + KabelKauf Empfehlung
Widerstandsset (Optional)Kauf Empfehlung
LED-SetKauf Empfehlung
Raspberry Pi Starter Set (Empfehlung)Kauf Empfehlung
Bei den angegebenen Links kann es sich um Affiliate Links handeln.

Für die Ansteuerung einer Leuchtdiode mit unserem Raspberry Pi, benötigen wir nicht nur einfach eine LED. Ihr benötigt auch noch am besten ein Entwicklerboard* für den Aufbau der Schaltung und einen Vorwiderstand.

Wer gerade mit seinen ersten Schaltungen startet, kauft sich am besten so wie ich ein Raspberry Pi Starter Set*. In diesem findet ihr neben wichitgen Bauteilen für eine LED-Schaltung auch zahlreiche weitere Komponeten wie Servos, Motoren, RFID-Kartenleser, Reed-Kontakte etc.

Raspberry Pi LED ansteuern - Pi SetPin
Raspberry Pi LED ansteuern – Pi Set

Vorwiderstand für LED

Eine LED sollte man nie direkt an die GPIO Pins des Raspberry Pis anschließen. Man sollte auf jeden Fall einen Vorwiderstand um den Strom durch die Diode zu begrenzen.

Für diesen Widerstand gibt es keine pauschale Größe, da der benötigte Vorwiderstand von mehreren Faktoren abhängt. Dazu gehören zum einen die Betriebsspannung, aber auch die Farbe und Type der LED gehören zu den beeinflussenden Faktoren.

Der Vorwiderstand lässt sich jedoch sehr einfach berechnen, in dem wir das Ohm’sche Gesetz U=R*I anwenden.

Vorwiderstand berechnen

Für die Berechnung des Vorwiderstandes benötigen wir als erstes die Vorwärtsspannung (VF oder UF; Englisch: Forward Voltage) und den Vorwärtsstrom (IF; Englisch: Forward Current) der LED:

Die Informationen finden wir im Datenblatt der LED. Das Datenblatt könnt ihr in den meisten Fällen direkt im Shop, wo ihr die LED kauft, herunterladen.

Raspberry Pi LED ansteuern - Datenblatt LEDPin
Raspberry Pi LED ansteuern – Datenblatt LED

Im Datenblatt oben (Beispiel 1) sehen wir, dass unsere LED eine Spannung von 1,9 – 2,2V und einen max. Vorwärtsstrom von 20mA verträgt. Jedoch sollte man den Widerstand nicht auf den max. Strom berechnen. Wie ihr seht ist die Empfehlung im Datenblatt auch 10mA.

Mit folgender Formel können wir jetzt unseren Vorwiderstand berechnen:

Vorwiderstand = (GPIO Spannung 3,3V – Spannung LED 2,0V) / Strom LED 0,010A

R = (3,3V – 2,0V) / 0,010A = 130,00Ohm

Wir würden uns daher für einen 150 oder 220 Ohm Vorwiderstand entscheiden.

Toleranzen: Wenn ihr mit der Formel etwas experimentiert, werdet ihr schnell merken, dass je nach LED Farbe und Spannung sich der Widerstand sehr stark verändert.

Alternativer Widerstand

Leider habe ich bei meinem Set keinen 150 Ohm Widerstand im Lieferumfang. Daher werden wir uns jetzt einmal ansehen, ob wir den 220 Ohm Widerstand trotzdem verwenden können, und rechnen uns den Strom bei einem 220 Ohm Widerstand aus.

Dazu drehen wir die Formel einfach einmal um.

Strom LED = (GPIO Spannung 3,3V – Spannung LED 2,0V) / Vorwiderstand

I = (3,3V – 2,0V) / 220Ohm = 0,0059A (~6mA)

Wie wir sehen, ist mit diesem Vorwiderstand der Strom deutlich unter dem im Datenblatt empfohlenen Strom für die rote LED. In der Praxis werdet ihr jedoch merken, dass eure LED auch mit einem 220 Ohm Widerstand ausreichend Hell leuchtet.

Da ihr öfter verschiedene Vorwiderstände benötigen werdet, empfehle ich euch ein kleines günstiges Widerstand-Set* zu kaufen. Mit dieser großen Auswahl könnt ihr dann den optimalen Vorwiderstand in eurer Schaltung verbauen.

Vorwiderstand: Solltet ihr kein Datenblatt haben, oder euch bei der Dimensionierung unsicher sein, solltet ihr immer zur Sicherheit einen etwas größeren Widerstand auswählen. Ist der Widerstand zu hoch leuchtet eure LED nicht mit voller Leuchtkraft. Wählt ihr einen zu kleinen Widerstand brennt euch die LED durch und ihr müsst euch eine neue kaufen.

GPIO Zero

Als Bibliothek für Schaltungen mit GPIO Pins empfehle ich euch GPIO Zero. Diese ist mittlerweile auch bereits standardmäßig unter Raspberry Pi OS vorinstalliert.

Falls ihr noch eine ältere OS Version verwendet, könnt ihr die Bibliothek mit folgenden Befehl installieren.

sudo apt install python3-gpiozero

Falls ihr ein anderes Betriebssystem auf eurem Raspberry Pi laufen habt, müsst ihr die Bibliothek gegebenenfalls mit folgenden Befehl installieren.

sudo pip3 install gpiozero
sudo apt install python3-gpiozero

Raspberry Pi GPIO Pins (Belegung)

Wenn wir mit GPIO Zero arbeiten, haben wir mehrere Möglichkeiten die GPIO Pins unseres Raspberry Pis anzugeben.

roteled = LED(17)
roteled = LED("GPIO17")
roteled = LED("BCM17")
roteled = LED("BOARD11")
roteled = LED("WPI0")
roteled = LED("J8:11")

Auch wenn man als Anfänger sich oft an den Board Pins orientiert, ist es üblich mit den GPIO Pin Nummern zu arbeiten.

Raspberry Pi Pinbelegung (Pinout)

Raspberry Pi LED ansteuern - GPIO PinoutPin
Raspberry Pi LED ansteuern – GPIO Pinout

LED ansteuern

Als erstes werden wir uns ansehen, wie wir eine einzelne LED zum Leuchten bringen können.

Dazu benötigen wir neben einer Leuchtdiode noch einen 220 Ohm Widerstand (siehe Kapitel: Vorwiderstand für LED).

Aufbau

Wenn ihr etwas anschließt, solltet ihr euren Raspberry Pi immer von der 5V Stromversorgung trennen!

Raspberry Pi LED ansteuern - AufbauPin
Raspberry Pi LED ansteuern – Aufbau
  • LED Kathode (kürzerer Draht) mit Ground des Pis verbinden.
  • LED Anode (längerer Draht) mit dem 220 Ohm Widerstand verbinden.
  • 220 Ohm Widerstand mit GPIO Pin 17 des Pis verbinden.

Achtung: Der GPIO Pin 17 ist der Board Pin 11.

Code

Als Programmiersprache verwenden wir Python. Wie ihr so einen Code auf eurem Raspberry Pi ausführt, könnt ihr in meinem Artikel Raspberry Pi Python Skript erstellen und ausführen nachlesen.

from gpiozero import LED

roteled = LED(17)

roteled.on()

Code Erklärung

Zuerst müssen wir die LED Funktion aus der GPIO-Zero Bibliothek importieren.

from gpiozero import LED

Mit der nächsten Codezeile wird festgelegt, dass am GPIO Pin eine LED angeschlossen ist. Damit wird dieser Pin automatisch als Ausgang geschaltet, und wir müssen keine weiteren Einstellungen vornehmen.

Vor dem = Zeichen können wir einen Wunschnamen für unsere LED vergeben. Über diesen Namen steueren wir unsere LED später an.

roteled = LED(17)

Mit der letzten Zeile schalten wir die LED ein.

roteled.on()

Wenn wir den Python Code jetzt ausführen, sollte unsere LED leuchten.

LED blinken lassen

Um jetzt die LED blinken zu lassen, müssen wir den Code etwas anpassen.

Code

from gpiozero import LED
from time import sleep

roteled = LED(17)

while True:
    roteled.on()
    sleep(1)
    roteled.off()
    sleep(1)

Code Erklärung

Mit der Funktion sleep aus der time Bibliothek können wir den Code für eine bestimmte Zeit lang anhalten.

from time import sleep

Hierbei handelt es sich um eine Endlos-Schleife. Alles in der Schleife wird immer und immer wieder ausgeführt.

while True:
    Code

Bei diesen vier Zeilen wird die rote LED eingeschaltet, danach wird der Code für eine Sekunde angehalten und anschließend wird die LED wieder ausgeschaltet. Damit durch die Schleife die LED nicht sofot wieder eingeschaltet wird, muss auch nach dem ausschalten, der Code wieder 1 Sekunde angehalten werden.

roteled.on()
sleep(1)
roteled.off()
sleep(1)

Mit den sleep-Werten könnt ihr die Blinkfrequenz anpassen.

Alternative

Für das einfache Blinken einer LED können wir alternativ auch die blink Funktion verwenden.

from gpiozero import LED
from signal import pause

roteled = LED(17)

red.blink()

pause()

Mehrere LEDs ansteuern

Als nächstes sehen wir uns an, wie wir mehre LED ansteuern können.

Aufbau

Raspberry Pi LED ansteuern - Aufbau mehrere LEDsPin
Raspberry Pi LED ansteuern – Aufbau mehrere LEDs

Dazu schalten wir unseren Pi zuerst aus (trennen ihn vom Strom), und schließen anschließend 5 LEDs an unserem Raspberry Pi an. Auch hier benötigen wir wieder für jede LED einen 220 Ohm Widerstand.

Als Ausgang verwenden wir die GPIO-Pins 5, 6, 13, 19 und 26.

Code

from gpiozero import LEDBoard
from time import sleep

leds = LEDBoard(5, 6, 13, 19, 26)

while True:
		leds.on()
		sleep(1)
		leds.off()
		sleep(1)

Einzelnen LEDs ansteuern

Mit der LEDBoard Funktion können wir nicht nur alle LEDs gleichzeitg ansteuern, sondern auch über .value und 1 für ein und 0 für aus eizelnen LEDs ein- bzw. ausschalten.

leds.value = (1, 0, 1, 0, 1)

Diese Methode kann man natürlich dann auch mit den normalen on und off Befehlen mischen.

from gpiozero import LEDBoard
from time import sleep

leds = LEDBoard(5, 6, 13, 19, 26)

while True:
		leds.on()
		sleep(1)
		leds.off()
		sleep(1)
        leds.value = (1, 0, 1, 0, 1)
        leds.off()

LEDs blinken lassen

Und auch hier gibt es wieder eine fertige Blinken-Funktion.

from gpiozero import LEDBoard
from signal import pause

leds = LEDBoard(5, 6, 13, 19, 26)

leds.blink()
pause()

Zusammenfassung

Mit der GPIO Zero Bibliothek ist die Ansteuerung von LEDs mit unserem Raspberry Pi sehr einfach umsetzbar. Mit den oben angeführten Code können wir bereits die meisten einfach LED Ansteuerungen umsetzten. Wie wir die GPIO Pins als Eingang für Taster, Schalter und Sensoren verwenden, sehen wir uns in einem der nächsten Artikel an.

Mich würde auch noch interessieren, welche Projekte ihr mit der GPIO Biliothek umsetzen möchtet. Schreibt es gerne unten in die Kommentare.

Unterstütze diesen Blog, damit er nicht endet wie eine schlechte Netflix-Serie – unvollständig und enttäuschend!

1 Gedanke zu „Raspberry Pi: LED ansteuern (GPIO)“

  1. Einfach genial, wie du zeigst, dass man mit dem Raspberry Pi nicht nur technisch basteln, sondern auch richtig cool mit LEDs spielen kann! Deine Anleitung ist klar und verständlich – ein tolles Projekt für Einsteiger und Tech-Enthusiasten gleichermaßen.
    LG,
    Florian

    Antworten

Schreibe einen Kommentar