Nota

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 [Qui] e unisciti oggi stesso!

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.

../_images/1.1.2_rgb_led_list.png

È decisamente conveniente acquistare un kit completo, ecco il link:

Nome

COMPONENTI NEL KIT

LINK

Raphael Kit

337

Raphael Kit

Puoi anche acquistarli separatamente dai link sottostanti.

INTRODUZIONE AI COMPONENTI

LINK D’ACQUISTO

Scheda di estensione GPIO

ACQUISTA

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistore

ACQUISTA

LED RGB

ACQUISTA

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

../_images/1.1.2_rgb_led_schematic.png

Procedure Sperimentali

Passo 1: Costruisci il circuito.

../_images/1.1.2_rgbLed_circuit.png

Passo 2: Apri il file di codice.

cd ~/raphael-kit/python-pi5

Passo 3: Esegui.

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.

Avvertimento

Se viene visualizzato l’errore RuntimeError: Cannot determine SOC peripheral base address, fare riferimento a If gpiozero doesn’t work..

Code

Nota

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.

#!/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

  1. Questo importa la classe RGBLED dalla libreria gpiozero per controllare un LED RGB, e la libreria time per implementare dei ritardi nel codice.

    #!/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à).
    
  2. 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.

  3. 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.

    COLORS = [(1, 0, 0), (0, 1, 0), (0, 0, 1), (1, 1, 0), (1, 0, 1), (0, 1, 1)]
    
  4. Un LED RGB è inizializzato con i suoi componenti rosso, verde e blu collegati rispettivamente ai pin GPIO 17, 18 e 27.

    # 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)
    
  5. 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.

    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)
    
  6. 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.

    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