.. 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 auf dem LED-Balkendiagramm 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 Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Name - INHALT DES KITS - LINK * - Raphael Kit - 337 - |link_Raphael_kit| Sie können sie auch separat über die untenstehenden Links kaufen. .. list-table:: :widths: 30 20 :header-rows: 1 * - KOMPONENTENVORSTELLUNG - KAUF-LINK * - :ref:`cpn_gpio_board` - |link_gpio_board_buy| * - :ref:`cpn_breadboard` - |link_breadboard_buy| * - :ref:`cpn_wires` - |link_wires_buy| * - :ref:`cpn_resistor` - |link_resistor_buy| * - :ref:`cpn_bar_graph` - \- 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**: Baue den Schaltkreis. .. note:: Achten Sie auf die Richtung beim Anschließen. Wenn Sie es verkehrt herum verbinden, wird es nicht leuchten. .. image:: ../python_pi5/img/1.1.3_LedBarGraph_circuit.png **Schritt 2:** Gehe zum Ordner des Codes. .. raw:: html .. code-block:: cd ~/raphael-kit/python-pi5 **Schritt 3**: Führe 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-Balkendiagramm regelmäßig ein- und ausschalten. .. warning:: Wenn die Fehlermeldung ``RuntimeError: Cannot determine SOC peripheral base address`` angezeigt wird, lesen Sie bitte :ref:`faq_soc` .. warning:: Wenn die Fehlermeldung ``RuntimeError: Cannot determine SOC peripheral base address`` angezeigt wird, lesen Sie bitte :ref:`faq_soc` .. 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 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. .. raw:: html .. code-block:: python #!/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** #. Diese Zeilen importieren die notwendigen Klassen und Funktionen. ``LED`` von ``gpiozero`` für die LED-Steuerung und ``sleep`` von ``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, jedes entspricht einem Pin in ``led_pins``. .. code-block:: python # 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] #. Lasse die LED auf der ungeraden Ziffer des LED-Balkendiagramms nacheinander leuchten. .. code-block:: python 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 #. Lasse die LED auf der geraden Ziffer des LED-Balkendiagramms nacheinander leuchten. .. code-block:: python 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 #. Lasse die LEDs auf dem LED-Balkendiagramm nacheinander leuchten. .. code-block:: python 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 #. 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: # 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