.. 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.2_py_pi5:
1.1.2 RGB-LED
====================
Einführung
--------------
In diesem Projekt werden wir eine RGB-LED steuern, um verschiedene Farben blinken zu lassen.
Benötigte Komponenten
------------------------------
Für dieses Projekt benötigen wir die folgenden Komponenten.
.. image:: ../python_pi5/img/1.1.2_rgb_led_list.png
:align: center
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 auch separat über die untenstehenden Links gekauft werden.
.. 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_rgb_led`
- |link_rgb_led_buy|
Schaltplan
-----------------------
Nachdem die Pins von R, G und B mit einem Strombegrenzungswiderstand verbunden wurden, schließen Sie sie jeweils an GPIO17, GPIO18 und GPIO27 an. Der längste Pin (GND) der LED verbindet sich mit dem GND des Raspberry Pi. Wenn den drei Pins unterschiedliche PWM-Werte gegeben werden, zeigt die RGB-LED verschiedene Farben an.
============ ======== ===
T-Board Name physical BCM
GPIO17 Pin 11 17
GPIO18 Pin 12 18
GPIO27 Pin 13 27
============ ======== ===
.. image:: ../python_pi5/img/1.1.2_rgb_led_schematic.png
Experimentelle Verfahren
----------------------------
**Schritt 1:** Baue den Schaltkreis.
.. image:: ../python_pi5/img/1.1.2_rgbLed_circuit.png
**Schritt 2:** Öffne die Code-Datei.
.. raw:: html
.. code-block::
cd ~/raphael-kit/python-pi5
**Schritt 3:** Ausführen.
.. raw:: html
.. code-block::
sudo python3 1.1.2_rgbLed_zero.py
Nachdem der Code ausgeführt wurde, sehen Sie, dass RGB Rot, Grün, Blau,
Gelb, Rosa und Cyan anzeigt.
.. 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 RGBLED
from time import sleep
# Define a list of colors for the RGB LED in RGB format (Red, Green, Blue).
# Each color component ranges from 0 (off) to 1 (full intensity).
COLORS = [(1, 0, 0), (0, 1, 0), (0, 0, 1), (1, 1, 0), (1, 0, 1), (0, 1, 1)]
# Initialize an RGB LED. Connect the red component to GPIO 17, green to GPIO 18, and blue to GPIO 27.
rgb_led = RGBLED(red=17, green=18, blue=27)
try:
# Continuously cycle through the defined colors.
while True:
for color in COLORS:
# Set the RGB LED to the current color.
rgb_led.color = color
# Output the current color to the console.
print(f"Color set to: {color}")
# Wait for 1 second before switching to the next color.
sleep(1)
except KeyboardInterrupt:
# Handle a KeyboardInterrupt (Ctrl+C) to exit the loop gracefully.
# GPIO cleanup will be managed automatically by GPIO Zero on script termination.
pass
**Code-Erklärung**
#. Dies importiert die Klasse ``RGBLED`` aus der Bibliothek ``gpiozero`` zur Steuerung einer RGB-LED und die Bibliothek ``time`` für Verzögerungen im Code.
.. code-block:: python
#!/usr/bin/env python3
from gpiozero import RGBLED
from time import sleep
# Define a list of colors for the RGB LED in RGB format (Red, Green, Blue).
# Each color component ranges from 0 (off) to 1 (full intensity).
#. Die Liste ``COLORS`` enthält Tupel, die verschiedene Farben im RGB-Format darstellen. Indem man den R, G und B Pins durch das Attribut ``rgb_led.color`` unterschiedliche Pulsweitenmodulation (PWM) Werte zuweist, kann die LED eine Vielzahl von Farben produzieren. Die PWM-Werte reichen von 0 bis 1, wobei 0 keine Intensität (aus) und 1 volle Intensität für jede Farbkomponente darstellt.
.. code-block:: python
COLORS = [(1, 0, 0), (0, 1, 0), (0, 0, 1), (1, 1, 0), (1, 0, 1), (0, 1, 1)]
#. Eine RGB-LED wird initialisiert, indem ihre roten, grünen und blauen Komponenten jeweils mit den GPIO-Pins 17, 18 und 27 verbunden werden.
.. code-block:: python
# Initialize an RGB LED. Connect the red component to GPIO 17, green to GPIO 18, and blue to GPIO 27.
rgb_led = RGBLED(red=17, green=18, blue=27)
#. Die Schleife ``while True:`` durchläuft kontinuierlich die in ``FARBEN`` definierten Farben. Für jede Farbe stellt ``rgb_led.color = farbe`` die LED auf diese Farbe ein, und ``sleep(1)`` pausiert für 1 Sekunde.
.. code-block:: python
try:
# Continuously cycle through the defined colors.
while True:
for color in COLORS:
# Set the RGB LED to the current color.
rgb_led.color = color
# Output the current color to the console.
print(f"Color set to: {color}")
# Wait for 1 second before switching to the next color.
sleep(1)
#. Dieser Abschnitt behandelt ein ``KeyboardInterrupt`` (wie das Drücken von Ctrl+C) auf elegante Weise. Das ``pass``-Statement wird als Platzhalter verwendet, um anzugeben, dass keine spezifische Aktion bei Unterbrechung durchgeführt wird, da GPIO Zero die GPIO-Bereinigung automatisch handhabt.
.. code-block:: python
except KeyboardInterrupt:
# Handle a KeyboardInterrupt (Ctrl+C) to exit the loop gracefully.
# GPIO cleanup will be managed automatically by GPIO Zero on script termination.
pass