.. note:: Ciao, benvenuto nella Community di SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts su Facebook! Approfondisci il mondo di Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati. **Perché unirti a noi?** - **Supporto tecnico esperto**: Risolvi problemi post-vendita e sfide tecniche con l'aiuto della nostra comunità e del nostro team. - **Impara e condividi**: Scambia consigli e tutorial per migliorare le tue competenze. - **Anteprime esclusive**: Ottieni accesso anticipato agli annunci di nuovi prodotti e alle anteprime. - **Sconti speciali**: Approfitta di sconti esclusivi sui nostri prodotti più recenti. - **Promozioni festive e giveaway**: Partecipa a giveaway e promozioni durante le festività. 👉 Sei pronto a esplorare e creare con noi? Clicca [|link_sf_facebook|] e unisciti oggi stesso! .. _1.1.2_py_pi5: 1.1.2 LED RGB ===================== Introduzione -------------- In questo progetto, controlleremo un LED RGB per farlo lampeggiare in vari colori. Componenti Necessari ------------------------------- Per questo progetto, avremo bisogno dei seguenti componenti. .. image:: ../python_pi5/img/1.1.2_rgb_led_list.png :align: center È decisamente conveniente acquistare un kit completo, ecco il link: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Nome - COMPONENTI NEL KIT - LINK * - Raphael Kit - 337 - |link_Raphael_kit| Puoi anche acquistarli separatamente dai link sottostanti. .. list-table:: :widths: 30 20 :header-rows: 1 * - INTRODUZIONE AI COMPONENTI - LINK D'ACQUISTO * - :ref:`cpn_gpio_extension_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| Schema Elettrico ----------------------- Dopo aver collegato i pin di R, G e B a una resistenza limitatrice di corrente, collegali rispettivamente a GPIO17, GPIO18 e GPIO27. Il pin più lungo (GND) del LED si collega al GND del Raspberry Pi. Quando ai tre pin vengono assegnati diversi valori PWM, il LED RGB visualizzerà colori diversi. ============ ======== === 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 Procedure Sperimentali ---------------------------- **Passo 1:** Costruisci il circuito. .. image:: ../python_pi5/img/1.1.2_rgbLed_circuit.png **Passo 2:** Apri il file di codice. .. raw:: html .. code-block:: cd ~/raphael-kit/python-pi5 **Passo 3:** Esegui. .. raw:: html .. code-block:: sudo python3 1.1.2_rgbLed_zero.py Dopo l'esecuzione del codice, vedrai che il LED RGB visualizza rosso, verde, blu, giallo, rosa e ciano. .. warning:: Se viene visualizzato l'errore ``RuntimeError: Cannot determine SOC peripheral base address``, fare riferimento a :ref:`faq_soc`. **Code** .. note:: Puoi **Modificare/Reset/Copy/Esegui/Ferma** il codice qui sotto. Ma prima, devi andare nella directory del codice come ``raphael-kit/python-pi5``. Dopo aver modificato il codice, puoi eseguirlo direttamente per vedere l'effetto. .. raw:: html .. code-block:: python #!/usr/bin/env python3 from gpiozero import RGBLED from time import sleep # Definisci un elenco di colori per il LED RGB in formato RGB (Rosso, Verde, Blu). # Ogni componente del colore varia da 0 (spento) a 1 (massima intensità). COLORS = [(1, 0, 0), (0, 1, 0), (0, 0, 1), (1, 1, 0), (1, 0, 1), (0, 1, 1)] # Inizializza un LED RGB. Collega il componente rosso a GPIO 17, il verde a GPIO 18 e il blu a GPIO 27. rgb_led = RGBLED(red=17, green=18, blue=27) try: # Cicla continuamente attraverso i colori definiti. while True: for color in COLORS: # Imposta il LED RGB sul colore corrente. rgb_led.color = color # Visualizza il colore corrente sulla console. print(f"Color set to: {color}") # Attendi 1 secondo prima di passare al colore successivo. sleep(1) except KeyboardInterrupt: # Gestisci un'interruzione da tastiera (Ctrl+C) per uscire dal ciclo in modo sicuro. # La pulizia dei GPIO verrà gestita automaticamente da GPIO Zero alla fine dello script. pass **Spiegazione del Codice** #. Questo importa la classe ``RGBLED`` dalla libreria ``gpiozero`` per controllare un LED RGB, e la libreria ``time`` per implementare dei ritardi nel codice. .. code-block:: python #!/usr/bin/env python3 from gpiozero import RGBLED from time import sleep # Definisci un elenco di colori per il LED RGB in formato RGB (Rosso, Verde, Blu). # Ogni componente del colore varia da 0 (spento) a 1 (massima intensità). #. L'elenco ``COLORS`` contiene tuple che rappresentano diversi colori in formato RGB. Assegnando diversi valori di Pulse Width Modulation (PWM) ai pin R, G e B attraverso l'attributo ``rgb_led.color``, il LED può produrre una varietà di colori. I valori PWM vanno da 0 a 1, dove 0 rappresenta nessuna intensità (spento) e 1 rappresenta la massima intensità per ciascun componente del colore. #. Ad esempio, impostare ``rgb_led.color = (1, 0, 0)`` accende il LED in rosso, poiché imposta la massima intensità per il componente rosso mantenendo spenti verde e blu. Allo stesso modo, variando le combinazioni di questi valori si ottengono diversi colori. Questa tecnica di miscelazione dei colori attraverso PWM permette la creazione di una vasta gamma di colori sul LED RGB. .. code-block:: python COLORS = [(1, 0, 0), (0, 1, 0), (0, 0, 1), (1, 1, 0), (1, 0, 1), (0, 1, 1)] #. Un LED RGB è inizializzato con i suoi componenti rosso, verde e blu collegati rispettivamente ai pin GPIO 17, 18 e 27. .. code-block:: python # Inizializza un LED RGB. Collega il componente rosso a GPIO 17, il verde a GPIO 18 e il blu a GPIO 27. rgb_led = RGBLED(red=17, green=18, blue=27) #. Il ciclo ``while True:`` cicla continuamente attraverso i colori definiti in ``COLORS``. Per ogni colore, ``rgb_led.color = color`` imposta il LED su quel colore, e ``sleep(1)`` si interrompe per 1 secondo. .. code-block:: python try: # Cicla continuamente attraverso i colori definiti. while True: for color in COLORS: # Imposta il LED RGB sul colore corrente. rgb_led.color = color # Visualizza il colore corrente sulla console. print(f"Color set to: {color}") # Attendi 1 secondo prima di passare al colore successivo. sleep(1) #. Questa sezione gestisce in modo sicuro una ``interruzione da tastiera`` (come premere Ctrl+C). Il comando ``pass`` viene utilizzato come segnaposto per indicare che non è intrapresa alcuna azione specifica in caso di interruzione, poiché GPIO Zero gestisce automaticamente la pulizia dei GPIO. .. code-block:: python except KeyboardInterrupt: # Gestisci un'interruzione da tastiera (Ctrl+C) per uscire dal ciclo in modo sicuro. # La pulizia dei GPIO verrà gestita automaticamente da GPIO Zero alla fine dello script. pass