Lezione 98-4: Dissolvenza di una luce LED utilizzando Arduino: Controllo della luminosità
I LED sono ovunque — indicatori, display, illuminazione decorativa — ma la maggior parte dei principianti si ferma ad accenderli e spegnerli semplicemente. Questo progetto fa il passo successivo: dissolvere dolcemente un LED in entrata e in uscita usando la capacità PWM (Pulse Width Modulation) integrata di Arduino. Invece di un lampeggio brusco, si ottiene un aumento e una diminuzione graduali della luminosità che imitano l'attenuazione naturale, gli effetti di respirazione e un controllo simile a quello analogico da un pin puramente digitale. È uno dei primi progetti più soddisfacenti perché puoi vedere il risultato immediatamente, e la stessa tecnica è alla base del controllo della velocità dei motori, del volume audio e dell'attenuazione della retroilluminazione nei prodotti reali.
Una volta compresa la dissolvenza, puoi applicarla a un'ampia gamma di progetti pratici:
- Creare un indicatore di stato "respirante" su un dispositivo che pulsa delicatamente invece di lampeggiare in modo fastidioso
- Attenuare automaticamente una luce notturna a LED in base alla luce ambientale o all'ora del giorno
- Controllare la luminosità di una retroilluminazione su un display LCD o OLED
- Costruire illuminazione d'atmosfera o lampade decorative con transizioni fluide tra i livelli di luminosità
- Simulare una sveglia con alba lenta che si illumina gradualmente per svegliarti naturalmente
- Aggiungere il controllo della velocità a piccoli motori DC o ventole (si applica lo stesso principio PWM)
Questo tutorial fa parte del Corso Passo-Passo Arduino di Robojax e copre specificamente il Progetto 4 di 10: Dissolvenza di una Luce LED Usando Arduino. Il programma completo è disponibile per il download sotto l'articolo.
Hardware e Componenti
La lista dei componenti per questo progetto è minima — se hai già fatto qualche lavoro con Arduino prima, probabilmente hai già tutto il necessario:
- 1× scheda Arduino (Uno, Nano, Mega o qualsiasi scheda compatibile)
- 1× LED (5mm o 3mm, qualsiasi colore)
- 1× Resistore (da 200Ω a 1000Ω — un intervallo da 300Ω a 1kΩ funziona bene)
- Breadboard e fili jumper DuPont
- Cavo USB per la programmazione e l'alimentazione
Una nota importante sul LED: il gambo più lungo è l'anodo (positivo), e il gambo più corto — o il lato con il bordo piatto sull'involucro di plastica — è il catodo (negativo). Invertirli significa che il LED semplicemente non si accenderà, quindi controlla bene prima di accendere.
Per il valore del resistore, la trascrizione illustra il calcolo a (nel video a 03:49): un LED tipico ha una caduta di circa 2V e necessita di circa 10mA di corrente. Con un'alimentazione di 5V, i restanti 3V devono cadere attraverso il resistore, dando R = V/I = 3V / 0,01A = 300Ω. In pratica, qualsiasi valore da 300Ω fino a 1000Ω funzionerà — valori più alti producono semplicemente un LED più fioco. Per la dissolvenza, questo va effettivamente bene, dato che stai comunque variando la luminosità.
Guida al Cablaggio
Il cablaggio è più semplice di così. L'anodo del LED si collega attraverso un resistore a un pin compatibile con PWM sull'Arduino — in questo progetto, il pin 3. Il catodo si collega a terra.
Perché proprio il pin 3? Perché non tutti i pin di Arduino supportano il PWM. Sulla maggior parte delle schede Arduino, i pin compatibili con PWM sono contrassegnati con un simbolo di tilde (~) — tipicamente i pin 3, 5, 6, 9, 10 e 11 su un Uno. Se usi un pin non-PWM, analogWrite() non produrrà un'uscita variabile; il LED sarà semplicemente acceso o spento.
Collega il circuito come segue:
- Inserisci il LED nella breadboard, notando quale gambo è l'anodo (più lungo) e quale è il catodo (più corto/lato piatto).
- Collega l'anodo del LED al pin 3 di Arduino attraverso il resistore.
- Collega il catodo del LED al pin GND di Arduino.
- Collega l'Arduino al computer tramite USB.
Spiegazione del Codice
Lo sketch per questo progetto è basato sul classico esempio "Fade" di Arduino, con alcune modifiche. Invece di spiegare ogni riga, concentriamoci sulle parti che vorrai modificare per i tuoi esperimenti.
Variabili Configurabili dall'Utente
All'inizio del codice, tre variabili controllano l'intero comportamento:
int led = 3; // il pin PWM a cui è collegato il LED
int brightness = 0; // quanto è luminoso il LED
int fadeAmount = 3; // di quanti punti far dissolvere il LEDled— Definisce a quale pin è collegato il LED. Il valore predefinito è il pin 3, ma puoi cambiarlo con qualsiasi pin compatibile con PWM (contrassegnato con ~ sulla tua scheda). Se sposti il LED su un pin diverso, aggiorna questo valore di conseguenza.brightness— Questo è il livello di luminosità corrente, che va da 0 (spento) a 255 (luminosità massima). Il codice lo inizializza a 0, ma potresti farlo partire da qualsiasi valore in questo intervallo.fadeAmount— Questo è il più interessante con cui giocare. Controlla quanti "passi" di luminosità vengono eseguiti ad ogni ciclo. Un valore piccolo come 3 produce una dissolvenza lenta e graduale. Un valore più grande come 20 fa sì che il LED si accenda e si spenga molto rapidamente. La trascrizione lo dimostra a (nel video a 22:37) — passando da 5 a 20 si velocizza drasticamente l'effetto.
Come funziona la dissolvenza
Il cuore della dissolvenza avviene in due righe all'interno di loop():
analogWrite(led, brightness);
brightness = brightness + fadeAmount;
Ad ogni passaggio attraverso il loop, il valore di luminosità corrente viene scritto sul LED usando analogWrite(), poi la luminosità viene incrementata di fadeAmount. La funzione analogWrite() utilizza il PWM per simulare una tensione analogica — commuta rapidamente il pin tra acceso e spento, e il rapporto tra tempo di accensione e tempo di spegnimento determina la luminosità percepita.
Quando la luminosità raggiunge 0 o 255, il codice inverte la direzione cambiando il segno di fadeAmount:
if (brightness <= 0 || brightness >= 255) {
fadeAmount = -fadeAmount;
}
Questo è ciò che fa sì che il LED si accenda gradualmente, poi si spenga gradualmente, e poi si riaccenda — un ciclo di respirazione continuo. Il delay(30) alla fine del loop controlla la velocità complessiva dell'animazione. Un ritardo più breve rende la dissolvenza più veloce; un ritardo più lungo la rallenta.
Sperimentare con i valori
Due variabili ti danno il maggior controllo sull'effetto visivo:
- Aumenta
fadeAmountper una dissolvenza più veloce e più drammatica. Prova 10 o 20. - Diminuisci
fadeAmountper un effetto di respirazione lento e delicato. Prova 1 o 2. - Regola il valore di
delay()per cambiare il ritmo. Ritardi più brevi rendono l'intero ciclo più rapido; ritardi più lunghi lo dilatano.
Combinare un fadeAmount piccolo con un ritardo breve produce una dissolvenza estremamente fluida, quasi organica — ideale per l'illuminazione ambientale. Un fadeAmount grande con un ritardo breve crea un effetto pulsante rapido.
Dimostrazione del progetto dal vivo
Una volta caricato il codice, vedrai il LED aumentare lentamente di luminosità da spento a massima luminosità, poi attenuarsi di nuovo, ripetendosi all'infinito. La trascrizione mostra il comportamento predefinito a (nel video a 22:25) — una dissolvenza fluida a velocità moderata.
Quando fadeAmount viene cambiato a 20, il LED si accende e si spegne molto rapidamente — quasi come uno sfarfallio. Quando è impostato a 3, la dissolvenza richiede sensibilmente più tempo, creando una transizione rilassata e graduale. Questo è dimostrato chiaramente nel video a (nel video a 23:02).
La bellezza di questo progetto è che puoi vedere l'effetto delle modifiche al tuo codice immediatamente — non sono necessarie modifiche al cablaggio, basta modificare le variabili e ricaricare. Questo ciclo di feedback immediato lo rende un ottimo modo per sviluppare l'intuizione su come PWM e temporizzazione interagiscono.
Se vuoi portare questo progetto oltre, attivando la dissolvenza con un pulsante invece di lasciarla funzionare continuamente, questo è trattato in un tutorial separato — vedi la sezione dei progetti correlati qui sotto.
Progetti correlati da questo video
- Lezione 98-1: Come accendere e spegnere un LED con Arduino
- Lezione 98-2: Come accendere e spegnere un LED usando un pulsante con Arduino
- Lezione 98-3: Come accendere/spegnere un LED a toggle usando un pulsante con Arduino
- Lezione 98-5: Dissolvenza della luce quando viene premuto un pulsante usando Arduino
- Lezione 98-6: Gioco LED altalena con Arduino
- Lezione 98-7: Luce camminante usando Arduino e 5 LED
- Lezione 98-8: Luce camminante con pulsante e LED con Arduino
- Lezione 98-9: Misuratore del livello di tensione LED usando Arduino o luce camminante con potenziometro
- Lezione 98-10: Semaforo con Arduino
Capitoli
- [00:00] Panoramica dei 10 progetti LED con Arduino
- [01:22] Introduzione al corso e componenti necessari
- [02:29] Comprendere i LED: simboli, polarità e tipi
- [03:49] Calcolo del valore della resistenza per il LED usando la legge di Ohm
- [05:53] Progetto 1: Accendere e spegnere un LED
- [12:43] Progetto 2: Controllo LED con un pulsante
- [17:13] Progetto 3: LED a toggle con pulsante
- [20:12] Progetto 4: Dissolvenza di un LED — analisi del codice
- [22:25] Dimostrazione della dissolvenza e regolazione della velocità
- [23:20] Progetto 5: LED con dissolvenza attivata da pulsante
- [27:32] Progetto 6: Effetto LED altalena
- [30:47] Progetto 7: Luce camminante con 5 LED
- [36:41] Progetto 8: Luce camminante controllata da pulsante
- [42:25] Progetto 9: Misuratore del livello di tensione LED con potenziometro
- [49:25] Progetto 10: Semaforo con Arduino
This code has not been parsed yet. Please return to the admin panel to parse it.
Cose di cui potresti avere bisogno
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
Risorse e riferimenti
-
DocumentazioneDocumentazione per il kit di apprendimento SunFounder 3 in 1 IoT/Smart Car.docs.sunfounder.com
-
Esterno
-
Esterno
-
Esterno
File📁
Librerie Arduino (zip)
-
Codice sorgente del kit di apprendimento Smart Car 3-in-1 di SunFounder
3in1-kit-main-v2.zip12.80 MB
Manuale dell'utente
-
Manuale di assemblaggio SunFounder 3-in-1 Arduino Smart CarQuesto documento mostra l'assemblaggio passo dopo passo della SunFounder 3-in-1 Arduino Smart Car
SunFounder_car_assembly_manual.pdf1.20 MB