Bemerkung

Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.

Warum beitreten?

  • Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.

  • Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.

  • Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.

  • Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.

  • Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.

👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [hier] und treten Sie heute bei!

1.1.3 LED-Balkendiagramm

Einführung

In diesem Projekt beleuchten wir die Lichter auf dem LED-Balkendiagramm nacheinander.

Benötigte Komponenten

Für dieses Projekt benötigen wir die folgenden Komponenten.

../_images/1.1.3_led_bar_list.png

Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:

Name

INHALT DES KITS

LINK

Raphael Kit

337

Raphael Kit

Sie können sie auch separat über die untenstehenden Links kaufen.

KOMPONENTENVORSTELLUNG

KAUF-LINK

GPIO Extension Board

KAUFEN

Steckbrett

KAUFEN

Jumper-Kabel

KAUFEN

Widerstand

KAUFEN

LED-Balkendiagramm

-

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: Baue den Schaltkreis.

Bemerkung

Achten Sie auf die Richtung beim Anschließen. Wenn Sie es verkehrt herum verbinden, wird es nicht leuchten.

../_images/1.1.3_LedBarGraph_circuit.png

Schritt 2: Gehe zum Ordner des Codes.

cd ~/raphael-kit/python-pi5

Schritt 3: Führe 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-Balkendiagramm regelmäßig ein- und ausschalten.

Warnung

Wenn die Fehlermeldung RuntimeError: Cannot determine SOC peripheral base address angezeigt wird, lesen Sie bitte If gpiozero doesn’t work.

Warnung

Wenn die Fehlermeldung RuntimeError: Cannot determine SOC peripheral base address angezeigt wird, lesen Sie bitte If gpiozero doesn’t work.

Warnung

Wenn die Fehlermeldung RuntimeError: Cannot determine SOC peripheral base address angezeigt wird, lesen Sie bitte If gpiozero doesn’t work.

Code

Bemerkung

Sie können den untenstehenden Code modifizieren/zurücksetzen/kopieren/ausführen/stoppen. Aber zuvor müssen Sie zum Quellcodepfad wie raphael-kit/python-pi5 gehen. Nachdem Sie den Code modifiziert haben, können Sie ihn direkt ausführen, um den Effekt zu sehen.

#!/usr/bin/env python3
from gpiozero import LED
from time import sleep

# Define GPIO pins where LEDs are connected
led_pins = [18, 23, 24, 25, 8, 7, 12, 16, 20, 21]

# Create LED objects for each pin
leds = [LED(pin) for pin in led_pins]

def odd_led_bar_graph():
    # Sequentially light up odd-numbered LEDs (index 0, 2, 4, etc.)
    for i in range(5):
        j = i * 2  # Calculate odd index
        leds[j].on()  # Turn on odd-numbered LED
        sleep(0.3)    # Delay for visual effect
        leds[j].off() # Turn off LED

def even_led_bar_graph():
    # Sequentially light up even-numbered LEDs (index 1, 3, 5, etc.)
    for i in range(5):
        j = i * 2 + 1  # Calculate even index
        leds[j].on()   # Turn on even-numbered LED
        sleep(0.3)     # Delay for visual effect
        leds[j].off()  # Turn off LED

def all_led_bar_graph():
    # Sequentially light up all LEDs one by one
    for led in leds:
        led.on()       # Turn on LED
        sleep(0.3)     # Delay for visual effect
        led.off()      # Turn off LED

def turn_off_all_leds():
    # Turn off all LEDs at once
    for led in leds:
        led.off()

try:
    # Main loop to cycle through LED patterns
    while True:
        odd_led_bar_graph()   # Activate odd-numbered LEDs
        sleep(0.3)            # Pause between patterns
        even_led_bar_graph()  # Activate even-numbered LEDs
        sleep(0.3)            # Pause between patterns
        all_led_bar_graph()   # Activate all LEDs
        sleep(0.3)            # Pause before restarting

except KeyboardInterrupt:
    # Handle interruption (Ctrl+C) gracefully
    turn_off_all_leds()      # Ensure all LEDs are turned off on exit
    pass

Code-Erklärung

  1. Diese Zeilen importieren die notwendigen Klassen und Funktionen. LED von gpiozero für die LED-Steuerung und sleep von 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, jedes entspricht einem Pin in led_pins.

    # Define GPIO pins where LEDs are connected
    led_pins = [18, 23, 24, 25, 8, 7, 12, 16, 20, 21]
    
    # Create LED objects for each pin
    leds = [LED(pin) for pin in led_pins]
    
  3. Lasse die LED auf der ungeraden Ziffer des LED-Balkendiagramms nacheinander leuchten.

    def odd_led_bar_graph():
        # Sequentially light up odd-numbered LEDs (index 0, 2, 4, etc.)
        for i in range(5):
            j = i * 2  # Calculate odd index
            leds[j].on()  # Turn on odd-numbered LED
            sleep(0.3)    # Delay for visual effect
            leds[j].off() # Turn off LED
    
  4. Lasse die LED auf der geraden Ziffer des LED-Balkendiagramms nacheinander leuchten.

    def even_led_bar_graph():
        # Sequentially light up even-numbered LEDs (index 1, 3, 5, etc.)
        for i in range(5):
            j = i * 2 + 1  # Calculate even index
            leds[j].on()   # Turn on even-numbered LED
            sleep(0.3)     # Delay for visual effect
            leds[j].off()  # Turn off LED
    
  5. Lasse die LEDs auf dem LED-Balkendiagramm nacheinander leuchten.

    def all_led_bar_graph():
        # Sequentially light up all LEDs one by one
        for led in leds:
            led.on()       # Turn on LED
            sleep(0.3)     # Delay for visual effect
            led.off()      # Turn off LED
    
  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:
        # Main loop to cycle through LED patterns
        while True:
            odd_led_bar_graph()   # Activate odd-numbered LEDs
            sleep(0.3)            # Pause between patterns
            even_led_bar_graph()  # Activate even-numbered LEDs
            sleep(0.3)            # Pause between patterns
            all_led_bar_graph()   # Activate all LEDs
            sleep(0.3)            # Pause before restarting
    
    except KeyboardInterrupt:
        # Handle interruption (Ctrl+C) gracefully
        turn_off_all_leds()      # Ensure all LEDs are turned off on exit
        pass