1.1.2 RGB-LED¶
Einführung¶
In diesem Projekt werden wir eine RGB-LED steuern, um verschiedene Farben blinken zu lassen.
Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Schaltplan¶
Nachdem die Pins von R, G und B mit einem Strombegrenzungswiderstand verbunden sind, verbinden Sie diese mit GPIO17, GPIO18 und GPIO27. Der längste Pin (GND) der LED verbindet sich mit dem GND des Raspberry Pi. Wenn den drei Pins unterschiedliche PWM-Werte gegeben werden, zeigt die RGB-LED verschiedene Farben an.
T-Board Name |
physical |
BCM |
GPIO17 |
Pin 11 |
17 |
GPIO18 |
Pin 12 |
18 |
GPIO27 |
Pin 13 |
27 |
Experimentelle Verfahren¶
Schritt 1: Bauen Sie den Schaltkreis auf.
Schritt 2: Öffnen Sie die Code-Datei.
cd ~/davinci-kit-for-raspberry-pi/python-pi5
Schritt 3: Ausführen.
sudo python3 1.1.2_rgbLed_zero.py
Nachdem der Code ausgeführt wurde, sehen Sie, dass RGB rot, grün, blau, gelb, rosa und cyan anzeigt.
Code
Bemerkung
Sie können den unten stehenden Code Modifizieren/Zurücksetzen/Kopieren/Ausführen/Stoppen. Aber bevor Sie das tun, müssen Sie zum Quellcode-Pfad wie davinci-kit-for-raspberry-pi/python-pi5
gehen. Nachdem Sie den Code geändert haben, können Sie ihn direkt ausführen, um die Auswirkungen zu sehen.
#!/usr/bin/env python3
from gpiozero import RGBLED
from time import sleep
# Definieren Sie eine Liste von Farben für die RGB-LED im RGB-Format (Rot, Grün, Blau).
# Jede Farbkomponente reicht von 0 (aus) bis 1 (volle Intensität).
COLORS = [(1, 0, 0), (0, 1, 0), (0.2, 0.1, 1), (1, 1, 0), (1, 0, 1), (0, 1, 1)]
# Initialisieren Sie eine RGB-LED. Verbinden Sie die rote Komponente mit GPIO 17, grün mit GPIO 18 und blau mit GPIO 27.
rgb_led = RGBLED(red=17, green=18, blue=27)
try:
# Kontinuierlich durch die definierten Farben durchlaufen.
while True:
for color in COLORS:
# Stellen Sie die RGB-LED auf die aktuelle Farbe ein.
rgb_led.color = color
# Geben Sie die aktuelle Farbe auf der Konsole aus.
print(f"Farbe eingestellt auf: {color}")
# Warten Sie 1 Sekunde, bevor Sie zur nächsten Farbe wechseln.
sleep(1)
except KeyboardInterrupt:
# Behandeln Sie ein KeyboardInterrupt (Ctrl+C) um die Schleife elegant zu beenden.
# Die GPIO-Bereinigung wird automatisch von GPIO Zero bei Beendigung des Skripts verwaltet.
pass
Code-Erklärung
Hier werden die Klasse
RGBLED
aus der Bibliothekgpiozero
zum Steuern einer RGB-LED und die Bibliothektime
für Verzögerungen im Code importiert.#!/usr/bin/env python3 from gpiozero import RGBLED from time import sleep
Die Liste
COLORS
enthält Tupel, die verschiedene Farben im RGB-Format darstellen. Durch Zuweisen unterschiedlicher Pulsweitenmodulations- (PWM-) Werte an jeden der R-, G- und B-Pins über das Attributrgb_led.color
kann die LED eine Vielzahl von Farben erzeugen. Die PWM-Werte reichen von 0 bis 1, wobei 0 keine Intensität (aus) und 1 volle Intensität für jede Farbkomponente darstellt.Beispielsweise führt das Einstellen von
rgb_led.color = (1, 0, 0)
dazu, dass die LED rot leuchtet, da volle Intensität für die rote Komponente eingestellt wird, während Grün und Blau ausgeschaltet bleiben. Verschiedene Kombinationen dieser Werte führen zu unterschiedlichen Farben. Diese Technik der Farbmischung durch PWM ermöglicht die Erstellung einer breiten Palette von Farben auf der RGB-LED.COLORS = [(1, 0, 0), (0, 1, 0), (0.2, 0.1, 1), (1, 1, 0), (1, 0, 1), (0, 1, 1)]
Eine RGB-LED wird initialisiert, wobei ihre roten, grünen und blauen Komponenten jeweils an die GPIO-Pins 17, 18 und 27 angeschlossen sind.
# Initialisieren Sie eine RGB-LED. Verbinden Sie die rote Komponente mit GPIO 17, grün mit GPIO 18 und blau mit GPIO 27. rgb_led = RGBLED(red=17, green=18, blue=27)
Die Schleife
while True:
durchläuft kontinuierlich die inCOLORS
definierten Farben. Für jede Farbe setztrgb_led.color = color
die LED auf diese Farbe, undsleep(1)
pausiert für 1 Sekunde.try: # Kontinuierlich durch die definierten Farben durchlaufen. while True: for color in COLORS: # Stellen Sie die RGB-LED auf die aktuelle Farbe ein. rgb_led.color = color # Geben Sie die aktuelle Farbe auf der Konsole aus. print(f"Farbe eingestellt auf: {color}") # Warten Sie 1 Sekunde, bevor Sie zur nächsten Farbe wechseln. sleep(1)
Dieser Abschnitt behandelt ein
KeyboardInterrupt
(zum Beispiel das Drücken von Ctrl+C) auf elegante Weise. Daspass
-Statement wird als Platzhalter verwendet, um anzuzeigen, dass bei einer Unterbrechung keine spezifische Aktion unternommen wird, da GPIO Zero die GPIO-Bereinigung automatisch handhabt.except KeyboardInterrupt: # Behandeln Sie ein KeyboardInterrupt (Ctrl+C) um die Schleife elegant zu beenden. # Die GPIO-Bereinigung wird automatisch von GPIO Zero bei Beendigung des Skripts verwaltet. pass