Cerca codice

Lezione 98-4: Dissolvenza di una luce LED utilizzando Arduino: Controllo della luminosità

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.

LED-5mm-verde

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

330_ohm_resistor
Resistore da 330 ohm 0,25 watt

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

Schema Arduino per due LED altalena
Schema Arduino per due LED altalena
Cablaggio Arduino per due LED altalena
Cablaggio Arduino per due LED altalena

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:

  1. Inserisci il LED nella breadboard, notando quale gambo è l'anodo (più lungo) e quale è il catodo (più corto/lato piatto).
  2. Collega l'anodo del LED al pin 3 di Arduino attraverso il resistore.
  3. Collega il catodo del LED al pin GND di Arduino.
  4. 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 LED
  • led — 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 fadeAmount per una dissolvenza più veloce e più drammatica. Prova 10 o 20.
  • Diminuisci fadeAmount per 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

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

Immagini

Arduino wiring for LED  with resistor
Arduino wiring for LED with resistor
Arduino schematic for LED
Arduino schematic for LED
Arduino wiring for two LEDs see saw
Arduino wiring for two LEDs see saw
Arduino schematic for two LEDs see saw
Arduino schematic for two LEDs see saw
LED-5mm-green
LED-5mm-green
330_ohm_resistor
330_ohm_resistor
936-Lessson 98-LED-4: Arduino code to fade the LED light
Lingua: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

File📁

Librerie Arduino (zip)

Manuale dell'utente