.. note::
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 [|link_sf_facebook|] und treten Sie heute bei!
.. _1.1.3_py_pi5:
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.
.. image:: ../python_pi5/img/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
============ ======== ======== ===
.. image:: ../python_pi5/img/1.1.3_LedBarGraph_schematic.png
Experimentelle Verfahren
------------------------------
**Schritt 1**: Bauen Sie den Schaltkreis auf.
.. note::
Achten Sie auf die Richtung beim Anschließen. Wenn Sie es verkehrt herum anschließen, wird es nicht leuchten.
.. image:: ../python_pi5/img/1.1.3_LedBarGraph_circuit.png
**Schritt 2:** Gehen Sie zum Ordner des Codes.
.. raw:: html
.. code-block::
cd ~/davinci-kit-for-raspberry-pi/python-pi5
**Schritt 3**: Führen Sie die ausführbare Datei aus.
.. raw:: html
.. code-block::
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.
.. warning::
Wenn die Fehlermeldung ``RuntimeError: Cannot determine SOC peripheral base address`` angezeigt wird, lesen Sie bitte :ref:`faq_soc`
**Code**
.. note::
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.
.. raw:: html
.. code-block:: python
#!/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`` aus ``gpiozero`` zur LED-Steuerung und ``sleep`` aus ``time`` für Verzögerungen.
.. code-block:: python
#!/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 von ``LED``-Objekten, von denen jedes einem Pin in ``led_pins`` entspricht.
.. code-block:: python
# 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.
.. code-block:: python
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.
.. code-block:: python
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.
.. code-block:: python
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. Der ``except``-Block behandelt ein KeyboardInterrupt (Ctrl+C) und stellt sicher, dass alle LEDs beim Beenden ausgeschaltet sind.
.. code-block:: python
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