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+ |
Puoi anche acquistarli separatamente dai link sottostanti.
INTRODUZIONE AI COMPONENTI |
LINK DI ACQUISTO |
|---|---|
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
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
Codice
Nota
Apri il file
2.2_fading_led.pysituato nel percorsoesp32-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.
Importa due moduli,
machineetime. Il modulomachinefornisce l’accesso a basso livello all’hardware del microcontrollore, mentre il modulotimefornisce funzioni per le operazioni correlate al tempo.import machine import time
Quindi, inizializza un oggetto
PWMper controllare il LED collegato al pin 26 e imposta la frequenza del segnale PWM a 1000 Hz.led = PWM(Pin(26), freq=1000)
Sfuma il LED dentro e fuori utilizzando un ciclo: il ciclo esterno
while Trueviene eseguito indefinitamente. Due ciclifornidificati 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’oggettoPWM.time.sleep(): Interrompe l’esecuzione del programma per 10 millisecondi tra ogni iterazione del ciclo, creando un aumento graduale della luminosità nel tempo.