mercoledì 28 ottobre 2015

Modulo con 14 LED per Arduino: uno sketch con tutti i giochi di luce - 2à parte

Ciao e ben ritrovati sul Blog ... Aspettando il Bus.
Oggi continueremo a lavorare sul modulo con i 14 LED , già visto nel precedente articolo, per fare alcuni piccoli miglioramenti al codice e aggiungeremo un comando per regolare la velocità di esecuzione del gioco.

Fig.1 - Modulo con 14 LED per Arduino UNO R3 di Paolo Luongo
Fig.1 - Modulo con 14 LED per Arduino UNO R3 di Paolo Luongo

Bene iniziamo con una piccola modifica al programma loop():

Fig.2 - Nuovo modulo main() per gli skecth di Paolo Luongo
Fig.2 - Nuovo modulo loop() per gli skecth di Paolo Luongo
Nella precedente versione i vari sketch erano eseguiti in sequenza perché erano scritti in sequenza, il codice funzionava ma era un pò bruttino. Visto che anche l'occhio vuole la sua parte l'ho riscritto utilizzando il costrutto switch(). Qui un hobbysta potrebbe trovarsi nel panico, ma vediamo come è facile leggere il nuovo codice.

Il costrutto switch permette di fare scelte diverse in base al valore che assume una variabile o espressione all' interno delle parentesi tonde. Nel nostro caso la variabile scelta, che assumerà via via tutti i valori compresi fra 1 e 7 perché è controllata dallo statment for.

All'interno del costrutto switch abbiamo le varie possibilità che vengono scelte in base alla voce case. Quindi quando scelta avrà valore 1 verrà eseguita la procedura SketchA(), con il valore 2 verrà eseguita la procedura SketchB e cosi via.
Resta il comando break che interrompe la normale esecuzione di altri case e termina il costrutto switch.

Detta così sembra complicato, ma basta fare delle prove per capire il suo funzionamento.
Però qualcuno potrebbe avere la necessità di fare un solo gioco, come modificare il programma?
Fig.3 - Nuovo modulo loop() per gli skecth di Paolo Luongo
Fig.3 - Nuovo modulo loop() per gli skecth di Paolo Luongo
Nel modo illustrato in Fig.3.  Basta seguire le modifiche consigliate nei commenti, in ogni caso il nuovo sketch modificato è qui.

Vediamo ora come regolare la velocita' con cui vengono eseguiti i giochi. I più attenti avranno notato l'uso della variabile ritardo che viene utilizzata nel comando delay(). Il modo più semplice è leggere il valore di un ingresso analogico, che ci fornirà un valore compreso fra 0 e 1023 e che utilizzeremo per impostare il ritardo. Come effetto collaterale avremo un leggero allungamento dei tempi, di circa 100 microsecondi per ogni passo dello sketch, ma è un problema che supereremo con la regolazione del trimmer o del potenziometro. In questo modo sarà facile regolare la velocita' di esecuzione degli sketch e quindi dei giochi.


Veniamo alle modifiche hardware e ad i materiali occorrenti:
  • 1 breadboard;
  • 1 resistore da 1 KOhm ;
  • 1 trimmer o potenziometro LINEARE con un valore compreso fra i 10 KOhm e i 100 KOhm;
  • 3 fili maschio-maschio (Rosso-Nero-Verde).
Fig.4 - Nuovo circuito da ggiungere per regolare la velocità - Paolo Luongo
Fig.4 - Nuovo circuito da ggiungere per regolare la velocità - Paolo Luongo

Il circuito da aggiungere è in Fig. 4 ; ecco come collegare i fili a Arduino UNO R3.
  • Il filo rosso ai 5 Volt;
  • il filo nero a GND;
  • il filo verde all'ingresso A0
Nel caso non funzioni correttamente vi consiglio di testare il nuovo circuito aggiunto, anche senza scollegare i LED, con questo sketch di prova. Per farlo funzionare dovete attivare il monitor seriale dal menu -> STRUMENTI -> Monitor seriale. Ruotando il trimmer il valore deve cambiare. In caso di problemi ricontrollate attentamente il cablaggio.

Nota: Il resistore da 1 KOhm non è influente  in questo caso e vi consiglio di aggiungerlo soprattutto in fase di debug del codice, perché in caso di errori, è facile collegare un'uscita al trimmer distruggendo il chip ATMEL. Col resistore la corrente massima sarà di 5 mA e non avremo nessun problema al chip e al nostro portafogli.      :-)

Bene, per oggi è tutto. 
Vi ricordo le FAQ di questo progetto e vi invito a dare uno sguardo anche agli altri articoli del blog.

Aggiornamento del 20 febbraio 2016 : Qui trovi la variante per controllare 19 LED !

Buon lavoro!

Ciao
Paolo :-)

Nessun commento: