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.

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;
Notice
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 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
80 pings
Skip to comment form