Il natale è appena passato e siamo nel pieno delle festività, gli ultimi giorni del 2011 tra preparativi e attesa del Capodanno ho preparato un altro gioco luminoso per le tue decorazioni.
Il gioco di luci che puoi realizzare con questo sketch è quello mostrato nel video seguente:
Il suo funzionamento come quello del quarto gioco è molto semplice e l’effetto lo troverai sicuramente interessante.
Prima di tutto devi modificare la variabile totalgame portando il suo valore a 5 per indicare allo sketch la presenza di un nuovo gioco:
int totalGame=5;
Successivamente modifica la funzione loop() aggiungendo il codice che seleziona e gestisce il nuovo gioco da inserire:
if (game == 5) { for ( int i=minpin; i<=maxpin; i++) { SoftPWMSetFadeTime(i, 0, 0); } game_five(); }
Non ti resta che inserire il gioco vero e proprio, ossia la funzione game_five() in fondo al tuo sketch in cui ci sono le linee di codice che consentono ad Arduino di eseguire la sequenza luminosa propria di questo effetto:
void game_five() { for ( int i=minpin; i<=maxpin; i++) { if (digitalRead( pinButton ) == HIGH) { break; } SoftPWMSetPercent(i, 0); } delay(100); for ( int i=minpin; i<=maxpin; i++) { if (digitalRead( pinButton ) == HIGH) { break; } SoftPWMSetPercent(i, 100); } delay(100); }
Come anticipavo le linee di codice presenti in questo gioco luminoso sono poche, al pari di quelle previste per il gioco precedente. Ecco come funziona:
linea 01: definisci la funzione game_five() di tipo vooid, in quanto non accetta e non restituisce alcun valore alla funzione chiamante ( loop );
linea 03: costruisci un ciclo di tipo for dal minpin al max pin in cui ad ogni incremento del valore di i esegui le istruzioni contenute tra parentesi;
linea 04: definisci un controllo basato sulla pressione del tasto che utilizzi per cambiare gioco luminoso, alla pressione del tasto la condizione di if è verificata e lo sketch interrompe il ciclo for per passare oltre, mantenendo premuto il tasto superi i delay settati alle linee 07 e 12 e rimandi il controllo alla funzione loop(); potrsti definire in modo differente la funzione game_five() e utilizzare un comando di return invece del break, questo eviterebbe di dover attendere i due delay, essendo il return immediato. Ti lascio questa variante come esercizio e possibile miglioramento dello sketch;
linea 05: è il primo cuore del gioco ossia la funzione SoftPWMSetPercent(pin,%) imposta per ciascun pin utilizzato dalle tue serie di luce il valore 0%, ossia le spegne;
linea 07: attendi il tempo stabilito di 100 millisecondi prima di continuare con lo sketch;
Le linee 08-12 eseguono la stesa sequenza di quelle appena viste con la differenza che alla linea 10 invece di spegnere la serie corrispondente al pin i la accendi portando la percentuale a 100%;
Se tutte le modifiche allo sketch sono andate a buon fine, puoi uplodare lo sketch sul tuo Arduino e premere il pulsante 5 volte per osservare il nuovo effetto.
Buone feste.