Home > Microcontrollori > Arduino > Regolare la luminosità di un LED con il PWM e Arduino Genuino

Regolare la luminosità di un LED con il PWM e Arduino Genuino

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.

 

Led connesso al pin 9 (output PWM) di Arduino / Genuino
Led connesso al pin 9 (output PWM) di Arduino / Genuino

 

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.

 

Led strip a 12V connessa via mosfet IRFZ44N al pin 9 (output PWM) di Arduino / Genuino
Led strip a 12V connessa via mosfet IRFZ44N al pin 9 (output PWM) di Arduino / Genuino

Se ti è piaciuto l’articolo condividi il link di questa pagina!

Riguardo Matteo Dalle Feste

Web Designer e Developer presso una nota testata giornalistica sul turismo. Appassionato di domotica, nel tempo libero, cura la realizzazione sia hardware che software di piccoli progetti domotici fai da te.

Guarda anche

Arduino Genuino e i LED, Accendere un led con Arduino

Oggi vediamo come accendere e spegnere un led con arduino. Per prima cosa vi consiglio …

Un commento

  1. progetto semplice e molto utile didatticamente

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *