Programmare con Arduino – led in dissolvenza

In questo secondo esempio proverai lo sketch per gestire un led in dissolvenza presente tra gli sketch forniti con l’IDE Arduino: Fade.
Per trovare questo esempio basta andare nel menu File -> Examples -> Basics -> Fade.

Fonte: arduino.cc - led in dissolvenza

led in dissolvenza

Questo articolo si inserisce a metà circa di una serie di articoli che ho scritto sulla programmazione con arduino:

Programmare con Arduino – le basi

Programmare con Arduino – Pin Digitali e Analogici

si tratta di sketch semplici, forniti con l’IDE Arduino stesso, con la spiegazione passo dopo passo di tutti i comandi.

Questa serie di articoli ti permette di comprendere la programmazione di arduino partendo da esempi semplici.

Lo sketch è il seguente:

/*
 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 lo analizzeremo riga per riga per comprendere come sia composto questo algoritmo, iniziamo:

linee 1-9: commento multi linea, indica lo scopo del programma e definisce, sempre in ultima riga, la possibilità di utilizzare liberamente questo codice, ossia i termini di licenza;

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

linea 11: imposta una variabile di tipo intero ( integer ) preimpostata al valore 5 che rappresenta l’incremento di luminosità che il led raggiungerà ad ogni 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 sommando il valore di fadeAmount ad ogni ciclo di loop, la variabile brightness, in questo modo, si incrementa di 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;

al raggiungimento del valore 0 o del valore 255 esegue quanto scritto alla linea successiva.

linea 27: inverte il segno della variabile fadeAmount ! Un piccolo trucco che avrà effetto sui successivi cicli di loop, quando eseguirà i comandi alla linea 23:

brightness = brightness + fadeAmount;

in realtà eseguirà un’operazione simile brightness = brightness + ( -fadeAmount );

decrementando, di fatto, il valore di luminosità (brightness) fino al raggiungimento del valore 0. A questo punto il valore di fadeAmount viene nuovamente invertito dalla linea 27 ed il calcolo alla linea 23 incrementa nuovamente il valore di brightness;

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.

Eseguendo il codice 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.