1.1.3 LED-Balkendiagramm¶
Einführung¶
In diesem Projekt beleuchten wir die Lichter des LED-Balkendiagramms nacheinander.
Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Schaltplan¶
T-Board Name |
physical |
wiringPi |
BCM |
GPIO18 |
Pin 12 |
1 |
18 |
GPIO23 |
Pin 16 |
4 |
23 |
GPIO24 |
Pin 18 |
5 |
24 |
GPIO25 |
Pin 22 |
6 |
25 |
SPICE0 |
Pin 24 |
10 |
8 |
SPICE1 |
Pin 26 |
11 |
7 |
GPIO12 |
Pin 32 |
26 |
12 |
GPIO16 |
Pin 36 |
27 |
16 |
GPIO20 |
Pin 38 |
28 |
22 |
GPIO21 |
Pin 40 |
29 |
21 |
Experimentelle Verfahren¶
Schritt 1: Bauen Sie den Schaltkreis auf.
Bemerkung
Achten Sie auf die Richtung beim Anschließen. Wenn Sie es verkehrt herum anschließen, wird es nicht leuchten.
Schritt 2: Gehen Sie zum Ordner des Codes.
cd ~/davinci-kit-for-raspberry-pi/python-pi5
Schritt 3: Führen Sie die ausführbare Datei aus.
sudo python3 1.1.3_LedBarGraph_zero.py
Nachdem der Code ausgeführt wurde, sehen Sie, dass die LEDs auf dem LED-Balken regelmäßig ein- und ausschalten.
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 LED
from time import sleep
# Definieren Sie die GPIO-Pins, an denen die LEDs angeschlossen sind
led_pins = [18, 23, 24, 25, 8, 7, 12, 16, 20, 21]
# Erstellen Sie LED-Objekte für jeden Pin
leds = [LED(pin) for pin in led_pins]
def odd_led_bar_graph():
# Nacheinander die ungerade nummerierten LEDs beleuchten (Index 0, 2, 4, usw.)
for i in range(5):
j = i * 2 # Ungerade Index berechnen
leds[j].on() # Ungerade nummerierte LED einschalten
sleep(0.3) # Verzögerung für visuellen Effekt
leds[j].off() # LED ausschalten
def even_led_bar_graph():
# Nacheinander die gerade nummerierten LEDs beleuchten (Index 1, 3, 5, usw.)
for i in range(5):
j = i * 2 + 1 # Gerade Index berechnen
leds[j].on() # Gerade nummerierte LED einschalten
sleep(0.3) # Verzögerung für visuellen Effekt
leds[j].off() # LED ausschalten
def all_led_bar_graph():
# Nacheinander alle LEDs einzeln beleuchten
for led in leds:
led.on() # LED einschalten
sleep(0.3) # Verzögerung für visuellen Effekt
led.off() # LED ausschalten
def turn_off_all_leds():
# Alle LEDs auf einmal ausschalten
for led in leds:
led.off()
try:
# Hauptloop zum Durchlaufen der LED-Muster
while True:
odd_led_bar_graph() # Ungerade nummerierte LEDs aktivieren
sleep(0.3) # Pause zwischen den Mustern
even_led_bar_graph() # Gerade nummerierte LEDs aktivieren
sleep(0.3) # Pause zwischen den Mustern
all_led_bar_graph() # Alle LEDs aktivieren
sleep(0.3) # Pause vor Neustart
except KeyboardInterrupt:
# Unterbrechung (Ctrl+C) auf elegante Weise behandeln
turn_off_all_leds() # Sicherstellen, dass alle LEDs beim Beenden ausgeschaltet sind
pass
Code-Erklärung
Diese Zeilen importieren die notwendigen Klassen und Funktionen.
LED
ausgpiozero
zur LED-Steuerung undsleep
austime
für Verzögerungen.#!/usr/bin/env python3 from gpiozero import LED from time import sleep
Die Liste
led_pins
enthält die GPIO-Pinnummern.leds
ist eine Liste vonLED
-Objekten, von denen jedes einem Pin inled_pins
entspricht.# Definieren Sie die GPIO-Pins, an denen die LEDs angeschlossen sind led_pins = [18, 23, 24, 25, 8, 7, 12, 16, 20, 21] # Erstellen Sie LED-Objekte für jeden Pin leds = [LED(pin) for pin in led_pins]
Lassen Sie die LED an der ungeraden Ziffer des LED-Balkendiagramms nacheinander aufleuchten.
def odd_led_bar_graph(): # Nacheinander die ungerade nummerierten LEDs beleuchten (Index 0, 2, 4, usw.) for i in range(5): j = i * 2 # Ungerade Index berechnen leds[j].on() # Ungerade nummerierte LED einschalten sleep(0.3) # Verzögerung für visuellen Effekt leds[j].off() # LED ausschalten
Lassen Sie die LED an der geraden Ziffer des LED-Balkendiagramms nacheinander aufleuchten.
def even_led_bar_graph(): # Nacheinander die gerade nummerierten LEDs beleuchten (Index 1, 3, 5, usw.) for i in range(5): j = i * 2 + 1 # Gerade Index berechnen leds[j].on() # Gerade nummerierte LED einschalten sleep(0.3) # Verzögerung für visuellen Effekt leds[j].off() # LED ausschalten
Lassen Sie die LED am LED-Balkendiagramm nacheinander aufleuchten.
def all_led_bar_graph(): # Nacheinander alle LEDs einzeln beleuchten for led in leds: led.on() # LED einschalten sleep(0.3) # Verzögerung für visuellen Effekt led.off() # LED ausschalten
Die Schleife
while True
durchläuft kontinuierlich die LED-Muster. Derexcept
-Block behandelt ein KeyboardInterrupt (Ctrl+C) und stellt sicher, dass alle LEDs beim Beenden ausgeschaltet sind.try: # Hauptloop zum Durchlaufen der LED-Muster while True: odd_led_bar_graph() # Ungerade nummerierte LEDs aktivieren sleep(0.3) # Pause zwischen den Mustern even_led_bar_graph() # Gerade nummerierte LEDs aktivieren sleep(0.3) # Pause zwischen den Mustern all_led_bar_graph() # Alle LEDs aktivieren sleep(0.3) # Pause vor Neustart except KeyboardInterrupt: # Unterbrechung (Ctrl+C) auf elegante Weise behandeln turn_off_all_leds() # Sicherstellen, dass alle LEDs beim Beenden ausgeschaltet sind pass