Wie man blinkende LEDs mit dem Raspberry Pi macht

Raspberry Pi Led Featured Image

Der Raspberry Pi ist mehr als nur ein winziger Computer. Es ist eine leistungsstarke Platine, die es Ihnen ermöglicht, so viele Dinge mit ihren GPIO-Pins zu tun. Hier zeigen wir Ihnen, wie Sie blinkende LEDs mit dem Raspberry Pi machen.

Inhaltsverzeichnis

  • Was lässt die LEDs blinken?
  • Was Sie benötigen
  • So machen Sie blinkende LEDs
  • Wie der Code funktioniert
  • Lassen Sie uns mehr LEDs blinken!
  • Häufig gestellte Fragen

Lesen Sie auch: Wie Sie Ihren Raspberry Pi über Windows per SSH steuern

Was lässt die LEDs blinken?

Wenn Sie den oberen Teil Ihres Raspberry Pi betrachten, finden Sie etwa 40 Metallpins, die aus der Leiterplatte herausragen. Wenn Sie einen Raspberry Zero haben, gibt es wahrscheinlich runde Löcher zum Löten von Header-Pins. In jedem Fall werden sie GPIO-Pins (General Purpose Input / Output) genannt.

Raspberry Pi Gpio Pins

Jeder GPIO-Pin kann zu einem bestimmten Zeitpunkt einen von zwei Modi haben: HIGH und LOW. Für die Pinbelegungsspezifikationen des Raspberry Pi zählt ein Pin, der mit 3,3 V geladen ist, als HIGH oder „logische 1“, während alles unter etwa 2,5 V als LOW oder „logische 0“ zählt. Eine Platine, die auf 3,3 V für hohe und niedrige Ausgänge basiert, wird als „3,3-V-Logik“ bezeichnet.

Wenn Sie eine LED zwischen einem Pin auf HIGH und einem GND-Pin anschließen, stellen Sie im Grunde einen geschlossenen Stromkreis her. Die LED sollte leuchten, weil Strom fließt.

Lt Spice Schematic Led Circuit

Manchmal können Ihre LEDs rauchen, wenn zu viel Strom hindurchfließt. Um das zu verhindern, können Sie einen Widerstand hinzufügen. Es spielt keine Rolle, ob er auf der Anoden- oder Kathodenseite ist – jede Seite sollte den durchfließenden Strom verringern.

Lesen Sie auch: Wie man ein Arduino mit einem Raspberry Pi programmiert

GPIO und andere Pins

Lassen Sie uns hier klarstellen, da nicht alle diese Metallpins als GPIO betrachtet werden. Sie sind nur GPIO, wenn sie programmiert werden können, um hoch oder niedrig zu sein – daher der Begriff „Input / Output“. Für den Raspberry Pi gibt es auch Pins, die für Strom (3,3 V, 5 V und GND) und für die Arbeit mit EEPROM (ID_SD und ID_SC) vorgesehen sind.

Diesmal müssen Sie an all diese anderen Pins außer GND und einem GPIO-Pin nicht denken.

Programmierung der GPIO-Pins

Wie sagen Sie jedem GPIO-Pin, was er tun soll? Auf der grundlegendsten Ebene müssen Sie Befehle in Maschinencode erstellen. Das wird für Anfänger etwas zu schwierig sein.

Stattdessen können Sie für den Raspberry Pi Python oder C++ verwenden, das dann in Maschinencode kompiliert wird.

Für dieses spezielle Projekt verwenden wir Python, da es einfacher zu verwenden ist.

Lesen Sie auch: Wie man Windows 11 auf einem Raspberry Pi 4 installiert

Was Sie benötigen

  • Jedes Raspberry Pi-Modell, das nicht das Pico ist (vorzugsweise das Raspberry Pi 3 Model B+, wie das in diesem Beispiel, aber alles funktioniert), installiert mit dem Raspberry Pi OS.
  • Ein HDMI-Monitor und Kabel
  • Maus und Tastatur
  • Ein Handy-Ladegerät (um den Raspberry Pi mit Strom zu versorgen)
  • Eine kleine LED
  • Ein 250Ω-Widerstand (kann jeder Wert in der Nähe davon sein)
  • Ein steckfreies Breadboard
  • x2 männlich-zu-weiblich Jumper-Kabel (oder männlich-zu-männlich, wenn Sie einen Header-Hut haben)

So machen Sie blinkende LEDs

Lassen Sie uns das Schritt für Schritt angehen und eine LED für sich blinken lassen.

  1. Öffnen Sie Ihr Terminal und geben Sie sudo apt-get install python3-rpi.gpio ein, um das RPi.GPIO-Modul für Python 3 zu installieren.

Terminal Install Python Gpio

  1. Öffnen Sie einen Texteditor und geben Sie diesen Code ein:
import RPI.GPIO as GPIO  
from time import sleep  
  
GPIO.setwarnings(False)  
GPIO.setmode(GPIO.BOARD)  
GPIO.setup(7, GPIO.OUT, initial=GPIO.LOW)  
  
while True:  
        GPIO.output(7, GPIO.HIGH)  
print("LED on")  
        sleep(1)  
        GPIO.output(7, GPIO.LOW)  
print("LED off")  
        sleep(1)
  1. Speichern Sie es in einem Ordner irgendwo. Der Dateiendung sollte .py sein. Auf meinem Raspberry Pi habe ich es „rpi-blink.py“ genannt, um es leichter zu finden.

File Explorer Rpi Blink Folder

  1. Schalten Sie Ihren Raspberry Pi aus und entfernen Sie ihn von allen Stromquellen.
  2. Um mit dem Aufbau des Schaltkreises zu beginnen, verdrahten Sie Ihre LED so, dass sich ein Widerstand entweder auf der Kathoden- oder Anodenseite befindet, und verbinden Sie dann die Kathodenseite mit Pin 7 und die Anodenseite mit Pin 9 (GND).

Lt Spice Schematic Led X1

Tipp: Um die Pin-Nummer herauszufinden, halten Sie Ihren Raspberry Pi so, dass die GPIO-Pins rechts sitzen. Der obere linke Pin ist Pin 1, der obere rechte ist Pin 2. Der unter Pin 1 ist Pin 3, dann rechts davon ist Pin 4, und so weiter.

  1. Schalten Sie ihn wieder ein, damit wir das Python-Skript ausführen können. Öffnen Sie Ihr Terminal und verwenden Sie cd, um in den Ordner der Python-Datei zu wechseln. Geben Sie ein:
python3 rpi-blink.py

um die LED blinken zu lassen.

Terminal Run Rpi Blink X1

Alternative: Wenn Sie die Thonny Python IDE haben, klicken Sie auf die Schaltfläche „Aktuelles Skript ausführen“, um es direkt aus der IDE auszuführen.

Thonny Python Ide Run Button

  1. Um es zu stoppen, drücken Sie Ctrl + C im Terminal. Wenn Sie jedoch die Thonny Python IDE verwenden, schließen Sie einfach den Editor.

Raspberry Pi Blinking Led X1

Lesen Sie auch: 10 nützliche Python-Einzeiler, die Sie kennen müssen

Wie der Code funktioniert

Es gibt zwei Dinge, die es funktionieren lassen: den Code und den Schaltkreis. Wir beginnen mit dem Code und teilen ihn in drei Teile:

  1. Importbefehle
  2. Setup-Befehle
  3. Schleifenbefehle

In der Praxis ist es gut, Code als kleine Funktionen zu betrachten, die zusammengefasst werden, um größere Funktionen zu erstellen.

Importbefehle

Python macht es normalerweise nicht so einfach, GPIO-Pins zu programmieren. Es gibt eine Menge Dinge, die im Hintergrund ablaufen. Die gute Nachricht ist, dass Sie den Code importieren können, der all diese lästigen Dinge behandelt.

Sehen Sie sich die Zeilen 1 und 2 an:

import RPI.GPIO as GPIO  
from time import sleep

Dies sind ein Paar Zeilen, die Code aus etwas importieren, das als „Python-Modul“ bezeichnet wird.

import RPI.GPIO as GPIO ermöglicht es Ihnen, den Inhalt des RPI.GPIO-Moduls zu importieren und das Schlüsselwort GPIO zu verwenden, um eine Funktion aufzurufen, die mit RPI.GPIO zusammenhängt.

Andererseits ermöglicht from time import sleep Ihnen, die Funktion sleep() aus Pythons integriertem Zeitmodul zu importieren. Dies ermöglicht es Ihnen, die nächste Codezeile für eine bestimmte Anzahl von Sekunden zu verzögern.

Setup-Befehle

Einige Codes müssen „eingerichtet“ oder so definiert werden, weil sie von anderem Code verwendet werden, um komplexe Logik auszuführen. Wir nennen diese Setup-Befehle.

Im Gegensatz zu Importbefehlen importieren Setup-Befehle keinen Code aus externen Modulen. Sie importieren sie aus den Modulen, die Sie bereits importiert haben.

Als Beispiel importiert GPIO.setwarnings(False) die .setwarnings()-Funktion aus dem RPI.GPIO-Modul, das zuvor als GPIO definiert wurde. Diese Funktion stoppt eine Warnung, wenn Sie den Code ausführen. Standardmäßig ist es auf True gesetzt.

Um die anderen beiden zu erklären, machen wir mit GPIO.setmode(GPIO.BOARD) weiter. Das sagt RPI.GPIO, welche Art von Pinbelegung Sie verwenden werden. Es gibt zwei Typen: BOARD und BCM. Die BOARD-Pinbelegung ermöglicht es Ihnen, Pins basierend auf ihren Nummern auszuwählen. Inzwischen basiert die BCM-Pinbelegung auf ihrer Broadcom SOC-Kanalbezeichnung. Um es kurz zu halten, ist BOARD einfacher zu verwenden, da es immer gleich ist, egal welches Raspberry Pi-Modell Sie verwenden. BCM hingegen kann von Modell zu Modell unterschiedlich sein.

Schließlich haben wir GPIO.setup(7, GPIO.OUT, initial=GPIO.LOW), das die .setup()-Funktion verwendet, die Sie nach drei Dingen fragt: der Pin-Nummer, seiner Bezeichnung und seinem Anfangswert. Die Pin-Nummer, die wir hier verwenden, ist Pin-Nummer 7. Wir sollen es als Ausgangspin einstellen und sicherstellen, dass es mit LOW beginnt. Ohne dies wird der Raspberry Pi niemals wissen, was er mit Pin 7 tun soll.

Schleifenbefehle

Das ist der coole Teil. Schleifenbefehle lassen Sie dem Raspberry Pi sagen, was er tun soll. Wir haben diese Schleife mit while True: begonnen, die die nächsten Codezeilen für immer wiederholt.

Es gab drei Funktionen in der Schleife: GPIO.output(), print() und sleep().

  • GPIO.output() nimmt einen Ausgangspin und setzt ihn entweder auf HIGH oder LOW. Wenn Sie darüber nachgedacht haben, welchen Pin Sie auf Ihrem Raspberry Pi verwenden möchten, sollten Sie 7 durch eine Pin-Nummer Ihrer Wahl ersetzen.
  • print() lässt etwas auf der Konsole ausgeben. Es nimmt einen String, eine Zahl oder eine Variable, die die vorherigen beiden enthält.
  • sleep() pausiert das gesamte Programm für eine bestimmte Anzahl von Sekunden. Verwenden Sie eine Zahl kleiner als 1, um es für weniger als eine Sekunde anzuhalten.

Der Schaltkreis

Jetzt, da Sie wissen, wie der Code funktioniert, lassen Sie uns den Schaltkreis ansehen. Der Code erstellt einen Schaltkreis, indem er Pin 7 mit GND verbindet. Wenn Pin 7 auf HIGH ist, gibt er 3,3 V ab, die durch den Widerstand und die LED fließen und dann in GND gelangen. Dies wird zu einem geschlossenen Stromkreis und ist der Grund, warum die LED leuchtet.

Lt Spice Schematic Raspberry Pi Pin 7 On And Off

Aber was passiert, wenn Pin 7 auf LOW ist? Die 3,3 V sinken auf etwa 0 V. Auf diese Weise fließt kein Strom durch die LED, sodass sie nicht leuchtet. Sie können sich Pin 7 als eine Art Schalter vorstellen, da er den Schaltkreis entweder ein- oder ausschaltet.

Lassen Sie uns mehr LEDs blinken!

Jetzt, da Sie wissen, was die Dinge zum Laufen bringt, lassen Sie uns unseren Code ein wenig ändern, um zwei LEDs zum Blinken zu bringen.

Dazu müssen Sie nur zwei weitere LEDs in beliebiger Farbe und zwei weitere 250Ω-Widerstände hinzufügen.

  1. Öffnen Sie Ihren Code-Editor erneut und fügen Sie diesen Code ein:
import RPI.GPIO as GPIO  
from time import sleep  
  
GPIO.setwarnings(False)  
GPIO.setmode(GPIO.BOARD)  
GPIO.setup(7, GPIO.OUT, initial=GPIO.LOW)  
GPIO.setup(12, GPIO.OUT, initial=GPIO.HIGH)  
GPIO.setup(37, GPIO.OUT, initial=GPIO.LOW)  
  
while True:  
        GPIO.output(7, GPIO.HIGH)  
        GPIO.output(12, GPIO.LOW)  
print("LED on @ pin 7")  
print("LED off @ pin 12")  
sleep(1)  
        GPIO.output(7, GPIO.LOW)  
        GPIO.output(12, GPIO.HIGH)  
print("LED off @ pin 7")  
print("LED on @ pin 12")  
sleep(1)  
if x == 1:  
                GPIO.output(37, GPIO.HIGH)  
print("LED on @ pin 37")  
                x = 0  
elif x == 0:  
                GPIO.output(37, GPIO.LOW)  
print("LED off @ pin 37")  
                x = 1  
else:  
print("Logikfehler")  
sleep(1)
  1. Speichern Sie es und schalten Sie Ihren Raspberry Pi aus.
  2. Um den Schaltkreis zu verdrahten, verbinden Sie jede LED, die Sie haben, in Reihe mit einem Widerstand, und verdrahten Sie dann die Kathodenseite mit dem Raspberry Pi. Es sollte einen für Pin 7, einen für Pin 12 und den letzten für Pin 37 geben. Die Anodenseite sollte mit GND verbunden sein. Jeder dieser Pins hat einen GND-Pin neben sich. Das sollten die Pins 9, 20 und 39 sein.

Lt Spice Schematic Led X3

Tipp: Wenn Ihnen die männlich-zu-weiblich Jumper-Kabel ausgehen, können Sie ein männlich-zu-männlich mit einem weiblich-zu-weiblich Jumper-Kabel verbinden, um ein längeres männlich-zu-weiblich Jumper-Kabel zu bilden.

Jumper Pins

  1. Sobald Sie fertig sind, starten Sie den Raspberry Pi und wiederholen Sie Schritt 6, um das Python-Skript zu starten.

Raspberry Pi Blinking Led X3

Lesen Sie auch: Wie man Python für grundlegende Linux-Systemadministration und Netzwerkaufgaben nutzt

Häufig gestellte Fragen

Warum bleibt meine LED an, wenn ich das Skript stoppe?

Wenn der Raspberry Pi das Python-Skript liest, liest er die Zeile, bevor er den Befehl ausführt. Sie haben es wahrscheinlich gestoppt, direkt nachdem es die Zeile GPIO.output(7, GPIO.HIGH) gelesen hat, sodass es den Pin nicht zuerst auf LOW setzen konnte. Sie können es so belassen, da es beim nächsten Neustart wieder auf LOW zurückkehrt. Alternativ können Sie ein weiteres Python-Skript erstellen, das den Pin sofort auf LOW setzt, sobald es ausgeführt wird.

Ich habe meine LED am richtigen Pin platziert, aber sie leuchtet überhaupt nicht. Warum?

Es gibt zwei mögliche Gründe: Entweder ist Ihre LED defekt oder Sie haben die Kathode auf die falsche Seite gesetzt. Versuchen Sie zuerst, die Pins der LED umzudrehen.

Ist es sicher, die LED umgekehrt zu platzieren?

Ja. Sie können sie umgekehrt platzieren, und der Strom wird einfach nicht hindurchfließen. Es ist eine besondere Eigenschaft von Dioden – sogar licht emittierenden Dioden – sie erlauben, dass Strom auf einer Seite hindurchfließt und auf der anderen nicht.

Ist es sicher, die LED zu repositionieren, während der Raspberry Pi mit Strom versorgt wird?

Wenn es nur darum geht, die LED umzukehren, ist es in Ordnung, und es gibt keinen Schaden. Aber wenn Sie die LED überall platzieren möchten, besteht die Möglichkeit, dass Sie den 5V-Pin mit einem GPIO-Pin kurzschließen. Das wird Ihre Platine beschädigen.