Nota

Ciao, benvenuto nella Community di SunFounder per appassionati di Raspberry Pi, Arduino ed ESP32 su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché unirti?

  • Supporto esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra community 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 anteprime speciali.

  • Sconti Speciali: Godi di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni e Omaggi Festivi: Partecipa a omaggi e promozioni festive.

👉 Pronto a esplorare e creare con noi? Clicca su [qui] e unisciti oggi stesso!

2.2 LED con Effetto Fading

Nel progetto precedente, abbiamo controllato l’accensione e lo spegnimento del LED utilizzando l’uscita digitale. In questo progetto, creeremo un effetto di respirazione sul LED utilizzando la modulazione di larghezza di impulso (PWM). La PWM è una tecnica che ci permette di controllare la luminosità di un LED o la velocità di un motore variando il ciclo di lavoro di un segnale a onda quadra.

Con la PWM, invece di accendere o spegnere semplicemente il LED, regoleremo la quantità di tempo in cui il LED è acceso rispetto al tempo in cui è spento all’interno di ciascun ciclo. Commutando rapidamente il LED tra acceso e spento a intervalli variabili, possiamo creare l’illusione che il LED si illumini e si attenui gradualmente, simulando un effetto di respirazione.

Utilizzando le capacità PWM dell’ESP32 scheda, possiamo ottenere un controllo fluido e preciso sulla luminosità del LED. Questo effetto di respirazione aggiunge un elemento dinamico e visivamente accattivante ai tuoi progetti, creando un display o un’atmosfera coinvolgente.

Componenti Necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

È sicuramente conveniente acquistare un intero kit, ecco il link:

Nome

ELEMENTI IN QUESTO KIT

LINK

Kit di Partenza ESP32

320+

ESP32 Starter Kit

Puoi anche acquistarli separatamente dai link sottostanti.

INTRODUZIONE AI COMPONENTI

LINK DI ACQUISTO

ESP32 Scheda

ACQUISTA

Estensione Fotocamera ESP32

ACQUISTA

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistore

ACQUISTA

LED

ACQUISTA

Pin Disponibili

Ecco un elenco di pin disponibili sulla scheda ESP32 per questo progetto.

Pin Disponibili

IO13, IO12, IO14, IO27, IO26, IO25, IO33, IO32, IO15, IO2, IO0, IO4, IO5, IO18, IO19, IO21, IO22, IO23

Schema Elettrico

../../_images/circuit_2.1_led.png

Questo progetto utilizza lo stesso circuito del primo progetto 2.1 Ciao, LED!, ma il tipo di segnale è diverso. Nel primo progetto, il segnale digitale ad alta e bassa tensione (0&1) viene emesso direttamente dal pin 26 per accendere o spegnere il LED, mentre in questo progetto viene emesso un segnale PWM dal pin 26 per controllare la luminosità del LED.

Cablaggio

../../_images/2.1_hello_led_bb.png

Codice

Nota

  • Apri il file 2.2_fading_led.py situato nel percorso esp32-starter-kit-main\micropython\codes, oppure copia e incolla il codice in Thonny. Poi, clicca su «Esegui Script Corrente» o premi F5 per eseguirlo.

  • Assicurati di selezionare l’interprete «MicroPython (ESP32).COMxx» nell’angolo in basso a destra.

# Importa le librerie necessarie
from machine import Pin, PWM
import time

# Crea un oggetto PWM
led = PWM(Pin(26), freq=1000)

while True:
    # Aumenta gradualmente la luminosità
    for duty_cycle in range(0, 1024, 1):
        led.duty(duty_cycle)
        time.sleep(0.01)

    # Riduci gradualmente la luminosità
    for duty_cycle in range(1023, -1, -1):
        led.duty(duty_cycle)
        time.sleep(0.01)

Il LED si illuminerà gradualmente man mano che il codice viene eseguito.

Come funziona?

In generale, questo codice dimostra come utilizzare i segnali PWM per controllare la luminosità di un LED.

  1. Importa due moduli, machine e time. Il modulo machine fornisce l’accesso a basso livello all’hardware del microcontrollore, mentre il modulo time fornisce funzioni per le operazioni correlate al tempo.

    import machine
    import time
    
  2. Quindi, inizializza un oggetto PWM per controllare il LED collegato al pin 26 e imposta la frequenza del segnale PWM a 1000 Hz.

    led = PWM(Pin(26), freq=1000)
    
  3. Sfuma il LED dentro e fuori utilizzando un ciclo: il ciclo esterno while True viene eseguito indefinitamente. Due cicli for nidificati vengono utilizzati per aumentare e diminuire gradualmente la luminosità del LED. Il ciclo di lavoro varia da 0 a 1023, rappresentando un ciclo di lavoro dal 0% al 100%.

    # Importa le librerie necessarie
    from machine import Pin, PWM
    import time
    
    # Crea un oggetto PWM
    led = PWM(Pin(26), freq=1000)
    
    while True:
        # Aumenta gradualmente la luminosità
        for duty_cycle in range(0, 1024, 2):
            led.duty(duty_cycle)
            time.sleep(0.01)
    
        # Riduci gradualmente la luminosità
        for duty_cycle in range(1023, -1, -2):
            led.duty(duty_cycle)
            time.sleep(0.01)
    
    • range(): Crea una sequenza di numeri interi da 0 a 1023.

    • Il ciclo di lavoro del segnale PWM è impostato su ciascun valore nella sequenza utilizzando il metodo duty() dell’oggetto PWM.

    • time.sleep(): Interrompe l’esecuzione del programma per 10 millisecondi tra ogni iterazione del ciclo, creando un aumento graduale della luminosità nel tempo.