Nota
Ciao, benvenuto nella Community di Appassionati di SunFounder Raspberry Pi, Arduino e ESP32 su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino e ESP32 insieme ad altri appassionati.
Perché unirsi a noi?
Supporto Esperto: Risolvi i problemi post-vendita e le 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 ai nuovi annunci di prodotti e alle anteprime.
Sconti Speciali: Goditi sconti esclusivi sui nostri prodotti più recenti.
Promozioni Festive e Giveaway: Partecipa a giveaway e promozioni festive.
👉 Pronto a esplorare e creare con noi? Clicca su [qui] e unisciti oggi!
2.2 Dissolvenza¶
Nel progetto precedente, abbiamo controllato il LED accendendolo e spegnendolo 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 il tempo in cui il LED è acceso rispetto al tempo in cui è spento in ogni ciclo. Commutando rapidamente il LED 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 che cattura l’attenzione.
Componenti Necessari
In questo progetto, avremo bisogno dei seguenti componenti.
È sicuramente conveniente acquistare un kit completo, ecco il link:
Nome |
ELEMENTI IN QUESTO KIT |
LINK |
|---|---|---|
ESP32 Starter Kit |
320+ |
Puoi anche acquistarli separatamente dai link sottostanti.
INTRODUZIONE AI COMPONENTI |
LINK PER L’ACQUISTO |
|---|---|
Piedini Disponibili
Ecco un elenco dei piedini disponibili sulla scheda ESP32 per questo progetto.
Piedini Disponibili |
IO13, IO12, IO14, IO27, IO26, IO25, IO33, IO32, IO15, IO2, IO0, IO4, IO5, IO18, IO19, IO21, IO22, IO23 |
Schema
Questo progetto utilizza lo stesso circuito del primo progetto 2.1 Ciao, LED!, ma il tipo di segnale è diverso. Nel primo progetto si uscivano direttamente livelli digitali alti e bassi (0&1) dal pin26 per accendere o spegnere il LED, in questo progetto si esce un segnale PWM dal pin26 per controllare la luminosità del LED.
Cablaggio
Codice
Nota
Puoi aprire il file
2.2_fading_led.inonel percorsoesp32-starter-kit-main\c\codes\2.2_fading_led.Dopo aver selezionato la scheda (ESP32 Dev Module) e la porta appropriata, clicca sul pulsante Carica.
Dopo che il codice è stato caricato con successo, potrai vedere il LED respirare.
Come funziona?
Definisci costanti e variabili。
const int ledPin = 26; // Il pin GPIO per il LED int brightness = 0; int fadeAmount = 5;
ledPin: Il numero del pin GPIO a cui è collegato il LED (in questo caso, GPIO 26).brightness: Il livello di luminosità corrente del LED (inizialmente impostato a 0).fadeAmount: La quantità di variazione della luminosità del LED in ogni passaggio (impostata a 5).
Inizializza il canale PWM e configura il pin del LED.
void setup() { ledcAttach(ledPin, 5000, 8); // Collega il pin del LED }
Qui utilizziamo la periferica LEDC (controllo LED) progettata principalmente per controllare l’intensità dei LED, anche se può essere utilizzata anche per generare segnali PWM per altri scopi.
bool ledcAttach(uint8_t pin, uint32_t freq, uint8_t resolution);: Questa funzione è usata per configurare il pin LEDC con la frequenza e la risoluzione specificate. Il canale LEDC sarà selezionato automaticamente.pinseleziona il pin GPIO.freqseleziona la frequenza del pwm.resolution_bitsseleziona la risoluzione per il canale ledc. Gamma da 1 a 14 bit (1-20 bit per ESP32).
La funzione
loop()contiene la logica principale del programma e viene eseguita continuamente. Aggiorna la luminosità del LED, inverte la quantità di dissolvenza quando la luminosità raggiunge il valore minimo o massimo e introduce un ritardo.void loop() { ledcWrite(ledPin, brightness); // Scrivi il nuovo valore di luminosità nel pin PWM brightness = brightness + fadeAmount; if (brightness <= 0 o brightness >= 255) { fadeAmount = -fadeAmount; } delay(50); // Aspetta 50 millisecondi }
bool ledcWrite(uint8_t pin, uint32_t duty);: Questa funzione viene utilizzata per impostare il duty cycle per il pin LEDC.pinseleziona il pin LEDC.dutyseleziona il duty cycle da impostare per il canale selezionato.