Programmare con Arduino – led in dissolvenza

In questo secondo esempio ho provato ed analizzato uno degli sketch forniti ad esempio dall’IDE Arduino: Fade.
Per trovare questo esempio basta andare nel menu File -> Examples -> Basics -> Fade.

Quello che troverai è il seguente file:

/*
 Fade



 This example shows how to fade an LED on pin 9
 using the analogWrite() function.

 This example code is in the public domain.

 */
int brightness = 0;    // how bright the LED is
int fadeAmount = 5;    // how many points to fade the LED by

void setup()  {
  // declare pin 9 to be an output:
  pinMode(9, OUTPUT);
} 

void loop()  {
  // set the brightness of pin 9:
  analogWrite(9, brightness);    

  // change the brightness for next time through the loop:
  brightness = brightness + fadeAmount;

  // reverse the direction of the fading at the ends of the fade:
  if (brightness == 0 || brightness == 255) {
    fadeAmount = -fadeAmount ;
  }
  // wait for 30 milliseconds to see the dimming effect
  delay(30);
}

Come al solito io analizzo riga per riga il codice per comprendere assieme come sia composto questo codice, iniziamo:

linee 1-9: commento multimilea, indica lo scopo del programma e definisce sempre in ultima riga la possibilità di utilizzare liberamente questo codice.

linea 10: imposta una variabile di tipo intero ( integer ) in cui memorizzerà il valore di luminosità raggiunto del led nel corso del ciclo di loop, la definizione di una variabile di questo tipo (integer) dovrebbe esserti chiaro, utilizza int nome_variabile = valore;

linea 11: imposta una variabile di tipo intero ( integer ) preimpostata a 5 che rappresenta l’incremento di luminosità che il led raggiungerà ad ogli ciclo ( loop )

linee 13-16: definizione della funzione setup() in cui alla linea 14 trovi il commento alla linea successiva la 15, in cui imposta il pin 9 come pin di tipo OUTPUT: pinMode(9, OUTPUT); la linea 16 chiude la funzione setup().

linea 18: definizione della funzione loop() che sarà terminata alla linea 31.

linea 20: utilizzando il comando analogWrite imposta il duty-cycle 0 al piedino 9, il duty-cycle è 0 in quanto brightness non è stato ancora variato dalla sua inizializzazione alla linea 11.

linea 23: incrementa il valore della variabile brightness del valore di fadeAmount ad ogni ciclo la variabile brightness si incrementa di un valore 5 fino a raggiungere il valore 255, come vedrai alla linea 26.

linea 26: esegue un doppio test sulla variabile brightness confrontandola sia con il valore 0 che con il valore massimo che possiamo passare al comando analogWrite: 255; il confronto in Arduino lo puoi effettuare con il comando if e utilizzando l’operatore OR la cui rappresentazione nella sintassi del linguaggio Arduino è il ||; al raggiungimento del valore 0 o del valore 255 esegue quanto alla linea successiva.

linea 27: inverte il segno della variabile fadeAmount questo trucco comporta che ai successivi cicli quando eseguirà i comendi alla linea 23: brightness = brightness + fadeAmount; in raltà esegue una operazione del tipo brightness = brightness + ( -fadeAmount ); decrementando invece di incrementare il valore di luminosità (brightness) al raggiungimento della soglia 0 il valore di fadeAmount viene nuovamente invertito.

linea 30: introduce un tempo di attesa di 30 millisecondi prima di ripetere il ciclo.

Il circuito che ho realizzato è molto semplice, ho collegato il terminale positivo di un led al pin 9 della scheda Arduino, ed il terminale negativo del led alla massa ( GND ) della scheda Arduino interponendo una resistenza da 470 ohm per proteggere il led.

Il risultato che otterrai è il seguente:

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: https://www.mauroalfieri.it/informatica/programmare-con-arduino-led-in-dissolvenza.html

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.