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.

../_images/1.1.3_led_bar_list.png

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

../_images/1.1.3_LedBarGraph_schematic.png

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.

../_images/1.1.3_LedBarGraph_circuit.png

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

  1. Diese Zeilen importieren die notwendigen Klassen und Funktionen. LED aus gpiozero zur LED-Steuerung und sleep aus time für Verzögerungen.

    #!/usr/bin/env python3
    from gpiozero import LED
    from time import sleep
    
  2. Die Liste led_pins enthält die GPIO-Pinnummern. leds ist eine Liste von LED-Objekten, von denen jedes einem Pin in led_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]
    
  3. 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
    
  4. 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
    
  5. 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
    
  6. Die Schleife while True durchläuft kontinuierlich die LED-Muster. Der except-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