Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
Dieses Instructable zeigt, wie Sie mehrere GPIO-Pins auf Ihrem RaspberryPi steuern, um 4 LEDs mit Strom zu versorgen. Es führt Sie auch in Parameter und bedingte Anweisungen in Python ein.
Unsere vorherige Anleitung mit den GPIO-Pins Ihres Raspberry Pi zur Steuerung einer LED zeigt, wie Sie eine einzelne LED mit dem Befehl GPIO.output ein- und ausschalten. Dieses Instructable baut auf diesem Wissen auf, um Ihnen beizubringen, wie Sie mehr Kontrolle über Ihre Schaltung erhalten.
Schritt 1: Was Sie brauchen
- Ein RaspberryPi mit bereits installiertem Raspbian. Sie müssen auch in der Lage sein, mit einem Monitor, einer Maus und einer Tastatur oder über Remote Desktop auf den Pi zuzugreifen. Sie können jedes Raspberry Pi-Modell verwenden. Wenn Sie eines der Pi Zero-Modelle haben, möchten Sie möglicherweise einige Header-Pins an den GPIO-Port anlöten.
- Rote, blaue, gelbe und grüne LEDs
- Ein lötfreies Prototyping-Breadboard
- 4 x 330 Ohm Widerstände
- Einige Stecker-zu-Buchse-Überbrückungsdrähte
Schritt 2: Erstellen Sie Ihre Schaltung
Bauen Sie die obige Schaltung auf Ihrem Steckbrett auf und stellen Sie sicher, dass sich keine der Komponentenleitungen berühren und dass die LEDs richtig herum angeschlossen sind.
Wie erkennen Sie die positiven und negativen Leitungen (die Polarität) an Ihren LEDs? Wenn Sie sich eine LED genau ansehen, werden Sie feststellen, dass sie zwei kleine Metallstücke im Inneren des farbigen Gehäuses hat. Diese werden Anode und Kathode genannt. Die Kathode ist die größte der beiden und wird auch mit dem Minuskabel der LEDs verbunden.
Nachdem Sie Ihre Schaltung überprüft haben, schließen Sie die Überbrückungskabel an die GPIO-Pins Ihres Raspberry Pi an, indem Sie dem obigen Diagramm folgen.
Schritt 3: Erstellen Sie ein Skript zum Steuern und Testen der LEDs
Öffnen Sie auf Ihrem Raspberry Pi IDLE (Menü > Programmierung > Python 2 (IDLE)).
Öffnen Sie ein neues Projekt, gehen Sie zu Datei > Neue Datei. Geben Sie dann den folgenden Code ein (oder kopieren Sie ihn und fügen Sie ihn ein):
RPi. GPIO als GPIO importieren
Importzeit GPIO.setmode(GPIO. BCM) GPIO.setup(17, GPIO. OUT) GPIO.setup(18, GPIO. OUT) GPIO.setup(22, GPIO. OUT) GPIO.setup(23, GPIO. OUT) GPIO.output(17, True) time.sleep(3) GPIO.output(17, False) time.sleep(1) GPIO.output(18, True) time.sleep(3) GPIO.output(18, False) time.sleep(1) GPIO.output(22, True) time.sleep(3) GPIO.output(22, False) time.sleep(1) GPIO.output(23, True) time.sleep(3) GPIO. Ausgabe(23, Falsch)
Speichern Sie Ihr Projekt als multilights.py (Datei > Speichern unter) in Ihrem Raspberry Pis-Dokumentenordner.
Öffnen Sie auf Ihrem Raspberry Pi Terminal (Menü > Zubehör > Terminal) und navigieren Sie zu Ihrem Ordner Dokumente, indem Sie Folgendes eingeben:
cd /home/pi/Dokumente
Sie können Ihr neues Skript jetzt ausführen, indem Sie Folgendes eingeben:
python multilights.py
Die Lichter werden abwechselnd ein- und ausgeschaltet. Das obige Skript verwendet den Befehl time.sleep, um zwischen jedem Schritt eine Pause zu erstellen, sodass jedes Licht 3 Sekunden lang eingeschaltet bleibt und 1 Sekunde lang gewartet wird, bevor das nächste Licht eingeschaltet wird.
Schritt 4: Hinzufügen von Flexibilität durch die Verwendung von Parametern und bedingten Anweisungen
Durch die Verwendung von Parametern und Bedingungsanweisungen können wir das obige Skript viel flexibler gestalten.
Ein Parameter ermöglicht es Ihnen, einen Wert zu speichern, den Sie später im Skript verwenden können. Die gängigsten Wertetypen sind Strings (Text), Integer (ganze Zahlen) oder Floats (Dezimalzahlen).
Eine bedingte Anweisung bestimmt, ob ein Codesegment ausgeführt werden soll oder nicht, indem überprüft wird, ob eine bestimmte Bedingung erfüllt ist. Die Bedingung kann auch Parameter beinhalten.
Öffnen Sie IDLE auf Ihrem Raspberry Pi und öffnen Sie ein neues Projekt (Datei > Neue Datei). Geben Sie dann Folgendes ein. Achten Sie darauf, dass alle Einzüge (Tabulatoren) eingeschlossen sind, indem Sie die Tabulatortaste verwenden:
RPi. GPIO als GPIO importieren
import time from sys import argv whichled=argv[1] ledaction = argv[2] LEDa=17 LEDb=18 LEDc=22 LEDd=23 GPIO.setmode(GPIO. BCM) GPIO.setup(LEDa, GPIO. OUT) GPIO. setmode(GPIO. BCM) GPIO.setup(LEDb, GPIO. OUT) GPIO.setmode(GPIO. BCM) GPIO.setup(LEDc, GPIO. OUT) GPIO.setmode(GPIO. BCM) GPIO.setup(LEDd, GPIO. OUT) if ledaction=="off": if whichled=="a": GPIO.output(LEDa, False) if whichled=="b": GPIO.output(LEDb, False) if whichled=="c": GPIO.output(LEDc, False) if whichled=="d": GPIO.output(LEDd, False) if whichled=="all": GPIO.output(LEDa, False) GPIO.output(LEDb, False) GPIO. output(LEDc, False) GPIO.output(LEDd, False) if ledaction=="on": if whichled=="a": GPIO.output(LEDa, True) if whichled=="b": GPIO.output(LEDb, True) if whichled=="c": GPIO.output(LEDc, True) if whichled=="d": GPIO.output(LEDd, True) if whichled=="all": GPIO.output(LEDa, True) GPIO.output(LEDb, True) GPIO.output(LEDc, True) GPIO.output(LEDd, True)
Speichern Sie Ihr Projekt als controllight.py (Datei > Speichern unter) in Ihrem Dokumentenordner. Öffnen Sie nun Terminal (Menü > Zubehör > Terminal) und geben Sie den folgenden Befehl ein:
python controllight.py b on
Die zweite LED sollte aufleuchten. Geben Sie nun Folgendes ein:
python controllight.py b aus
Die zweite LED sollte erlöschen.
In den Zeilen 5, 6, 7 & 8 legen wir die Parameter LEDa, LEDb, LEDc und LEDd an, um zu speichern, welchen GPIO-Pin wir mit welcher LED verbunden haben. Dies ermöglicht es uns, alternative GPIO-Pins zu verwenden, ohne wesentliche Änderungen am Skript vornehmen zu müssen.
Wenn wir beispielsweise die erste LED-Leitung stattdessen an Pin 3 (GPIO 2) anschließen, müssen wir nur Zeile 5 wie folgt ändern:
LEDa=2
Zeile 4 speichert die Werte, die Sie nach controllight.py eingegeben haben, in die Parameter whichled (c) und ledaction (on). Das Skript verwendet dann diese Parameter zusammen mit einer Reihe von Bedingungsanweisungen, um zu entscheiden, welche LED gesteuert und ob sie ein- oder ausgeschaltet werden soll.
Zeile 16 (wenn ledaction=="on":) ist eine bedingte Anweisung. Die eingerückten Zeilen, die dieser Anweisung folgen, werden nur ausgeführt, wenn die Bedingung der Anweisung erfüllt ist. In diesem Szenario ist die Bedingung, dass ledaction den Text on enthält.
Können Sie durch das Durchlesen der anderen Bedingungsanweisungen des Skripts vorhersagen, was passiert, wenn Sie den folgenden Befehl in Terminal eingeben?
python controllight.py alle an
Probieren Sie es aus und posten Sie Ihre Antwort im Kommentarbereich unten.