In questo articolo vedremo come regolare la luminosità di un led con Arduino.
Come spiegato nell’articolo precedente “Arduino: GPIO, gestire gli Input e Output” che descrive per l’appunto le funzionalità delle porte GPIO dell’Arduino/Genuino, è possibile usufruire della funzionalità PWM gestita a livello hardware per controllare la luminosità di un led.
Un altro articolo che spiega come collegare un led ad Arduino è disponibile qui: Arduino Genuino e i LED, Accendere un led con Arduino.
Vediamo qualche esempio pratico:
Led effetto “fade-in” e “fade-out” con Arduino Genuino
Un semplice esempio per capire come usare il PWM di Arduino per gestire l’intensità luminosa (dimmer) di un led.
/*
Fade-in e Fade-out LED con Arduino (Author: Matteo Dalle Feste - matteo@dallefeste.com - info@ciaobit.com - https://ciaobit.com )
Libero utilizzo a fini non commerciali e mantenendo i crediti dell'autore
You can use this script for free. Not for commercial use. Keep author credits
*/
// Dichiaro la variabile LED e associo un numero intero che corrisponde al pin digitale di Arduino/Genuino
int LED = 9;
// espresso in millisecondi
int ritardo = 5;
// definisco il Pin LED come OUTPUT
void setup() {
pinMode(LED, OUTPUT);
}
// Ripeti queste istruzioni all'infinito:
void loop() {
// Imposto il PWM da 0 a 255 per qualche millisecondo
for(int ValorePWM = 0; ValorePWM <= 255; ValorePWM++){
analogWrite(LED, ValorePWM);
delay(ritardo);
}
// Imposto il PWM da 255 a 0 per qualche millisecondo
for(int ValorePWM = 255; ValorePWM >= 0; ValorePWM--){
analogWrite(LED, ValorePWM);
delay(ritardo);
}
}
Il codice qui sopra riportato definisce il pin 9 come pin di output usato per collegare il led. La scelta di questa porta non è casuale, infatti, va verificato sui datasheet e sui manuali quali sono i pin che gestiscono nativamente questa funzione.
Impostiamo anche una variabile “ritardo” che useremo per provare a cambiare i tempi di transizione da un valore all’altro del PWM.
il codice che è racchiuso nel loop, esegue per l’appunto un ciclo infinito che trova al suo interno due cicli for.
Il primo ciclo for aumenta progressivamente il valore del pwm, che va da 0 a 255.
Di conseguenza il led passerà da un valore di luminosità uguale a zero a un valore di 100%.
Questa accensione graduale crea ad esempio un’effetto “accensione luci soft”, un effetto molto piacevole.
Se il promo ciclo faceva l’effetto “Fade-in”, il secondo ciclo for invece esegue l’effetto contrario, ovvero il “Fade-out”, quindi le luci si spengono gradualmente.
Di seguito un esempio di collegamento di Arduino a una striscia a LED da 12v attraverso un MOSFET pilotato dal PWM.
Se ti è piaciuto l’articolo condividi il link di questa pagina!
progetto semplice e molto utile didatticamente
Provando il circuito si nota una scattosità (accensione a scatti) del Led nella parte iniziale della dimmerazione (a bassa luce). Da qualche parte ho letto che è dovuta al pwm a 8 bit (256 passi), e che si potrebbe evitare con un pwm a 12 bit usando Arduino e un integrato Texas TLC5940 ma non ho alba come fare. Forse tu sei in grado di aiutarmi. Grazie Giorgio Pellegrini.
Ciao Giorgio,
a paritá di circuito potresti provare a giocare sul tempo di transizione piú breve tra un valore del pwm e l’ altro.
Purtroppo non dispongo dell’ integrato che dici tu per provare, ma sembra abbastanza semplice se usi la libreria dedicata dovresti riuscire a settare il valore del pwm per il canale di output che ti interessa.
Ciao Federico sono un neofilo di Arduino sto iniziando i primi passi, vorrei sapere se questo progetto può funzionare anche con una strip da 24V
Buon giorno. Provando il circuito si nota una scattosità (accensione a scatti) del Led nella parte iniziale della dimmerazione (a bassa luce). Da qualche parte ho letto che è dovuta al pwm a 8 bit (256 passi), e che si potrebbe evitare con un pwm a 12 bit usando Arduino e un integrato Texas TLC5940 ma non ho alba come fare. Forse tu sei in grado di aiutarmi. Grazie Giorgio Pellegrini.
Ciao! il progetto é volutamente composto da meno componenti possibili per semplificare al massimo la costruzione. non ho mai provato il pwm esterno.
grazie mille
Funziona anche con la strip da 24V ?