GIOCO DI LUCI CON ARDUINO

Circuito con Arduino per Accendere una Matrice di LED…


 
 
 
 




 

DESCRIZIONE

Il progetto è qui presentato senza pretese che sia totalmente funzionante, è solo a scopo didattico.
La prova al banco dimostra la fattibilità. Poi infine nella messa in opera ci dovranno essere delle precauzioni che la lunghezza delle
connessioni non sia eccessiva, oppure che l’ alimentazione sia filtrata da eventuali disturbi.
Lo sviluppo comprende un Arduino UNO V3, una matrice di LED da 6 righe per 4 colonne.
Il programma all’ atto di attivazione di un pulsante o rilevamento di passaggio di una moneta, inizia a far lampeggiare il LED successivo alla sequenza. Se nessuno attivo chiaro che parte dal primo. La disposizione parte da un quadrato che rispecchia in un certo modo gli assi cartesiani. Quindi la sequenza di accensione parte dal basso a sinistra e segue con l’ aumento della Y, fino al massimo del numero di una colonna. Di seguito, si passa alla colonna successiva. Vedasi tabella di seguito.


 




 

CIRCUITO STAMPATO
Per semplificare lo sviluppo, ho organizzato uno stampato a singola faccia, che prevede il collegamento di ogni anodo e catodo. La scheda prevede già una espansione di matrice da 6×6. La figura di sotto rappresenta la disposizione della scheda. Ho lasciato dello spazio tra anodi e catodi di ogni LED, per far passare più piste.

Si dovrebbe annotare che i catodi sono rivolti verso le resistenze che vanno all’ Arduino. Mentre gli anodi sono collegati ai collettori dei transistors. Quindi vediamo lo schema elettrico.

 




 

SCHEMA ELETTRICO

Lo schema elettrico è il seguente:

Notare che l’ Arduino andrà collocato in connettori. Consiglio questo modo, per poter estrarlo in caso di riprogrammazione.
In tutti i casi si può vedere i dettagli scaricando il pacchetto che contiene anche gli sketchs da caricare sull’ Arduino, i documenti per lo sviluppo dello stampato ed i PDF dello stampato. Uno sketch ha il periodo che i LEDs rimangono accesi unico e si avvia al raggiungimento del numero massimo dei LEDs. Questo si chiama matrix_single_time.ino.
Il secondo, matrix_multiple_time.ino, funziona che ogni LED ha un suo periodo autonomo e termina con la durata assegnata (TIMEOUT). Inoltre, nel caso che tutte le luci sono accese, viene azzerata la durata di quel LED che ha il periodo più lungo.

 

FUNZIONAMENTO DEL PROGRAMMA

Il programma permette alcune personalizzazioni, che sono elencate nelle prime linee del programma. A prescindere da quello a cui è
attualmente designato si potrebbe prendere l’ Arduino ed implementare una matrice 8 righe per 6 colonne, con solo due linee
di correzione. Vediamo in dettaglio. La linea 5 #define DEBUG definisce se compilare con la seriale
collegata per il debugging. Di seguito, nello sketch, alle linee 23 e 24 si può definire quali piedini assegnare da usare con la seriale. Ci vuole una interfaccia USB-RS232 TTL come da figura.


Quindi si potrà collegare ai piedini ancora disponibili a secondo di come si vorrà assegnarli.
La linea 12 #define INBTN A0, ci permette di assegnare l’ ingresso che si vuole usare per attivare il conteggio. Almeno per questo progetto si prevede un blocchetto con fissaggio a vite. Ma per utilizzo diverso rimane la possibilità di assegnare a nuova posizione. Eccetto quelli che sull’ Arduino sono numerati da 0 a 13, che sono quelle che si usano per pilotare la matrice di LEDs.
La linea 13 #define TMPRESS 20, serve per definire il periodo che l’ ingresso deve rimanere basso per essere convalidato. Potrebbe essere necessario l’aggiustaggio per definirne la sensibilità. Il valore è espresso in 2,5 millisecondi. Che corrisponde al periodo di aggiornamento dei LEDs. La linea 14 #define TIMEOUT 7200, stabilisce quanto a lungo rimangono tutti i LEDs accesi, una volta che s’è raggiunto il numero massimo di accensioni.La misura è in secondi, per tanto s’è considerato un periodo di due ore. Nella funzione countdown il ritardo è di 998 millisecondi, che potrebbe essere necessario un aggiustamento per avere il periodo corretto. Questo per il primo sketch (matrix_single_time.ino). Le linee 15 e 16 definiscono quante colonne NUMCOLS e quante righe NUMROWS che per il progetto sono 4 e 6 rispettivamente. Alle seguenti 3 linee si calcola le impostazioni del programma, a seconda dei
valori definiti per le righe e le colonne, di cui sopra. (Non sono da modificare anche in un uso diverso del programma).
Alla linea 20 #define NUMBLINKS 8, si può variare quante volte lampeggiare prima di far rimanere il LED acceso fisso. Fare attenzione che può essere solo un numero pari, pena che finisce il conteggio con il relativo LED spento. La linea 21 #define COMMON_ANODE, ci permette di impostare se usare livelli bassi o livelli alti per le uscite delle righe. Per un qual caso si volesse
interporre dei buffers a transistors o integrati come ULN2804, questo vi permette di variare la compilazione e invertire le uscite. Se si volesse le uscite attive alte, basta commentare la linea, mettendo //. Lo stesso si applica anche per la linea 22 #define COL_ACTIVE_LOW, ci permette di inverire la logica delle uscite per le colonne. Io ho impostato da pilotare dei 2N2907A, quindi mi servivano attive basse. La linea 25 #define TIMELAPSE 2500, è quella che stabilisce la frequenza di aggiornamento della matrice e la scansione delle colonne. Il periodo è in microsecondi. In effetti qui si richiama la funzione refresh ogni 2,5
millisecondi. Si potrebbe aggiustare, aumentando il valore, per ridurre leggermente la brillantezza dei LEDs, ma si rischia di incorrere in un fastidioso sfarfallio. Riducendo ulteriormente potrebbe compromettere lo svolgimento degli altri compiti dell’ Arduino.
Per il resto, si può anche adattare il programma per pilotare un display numerico a 7 segmenti, con un massimo di 6 cifre. Oppure una matrice di 8×6 colonne. Per questo il programma è un impegno didattico, per apprendere alcuni trucchi di programmazione. Un particolare da notare è stato quello di usare una routine di interrupt per poter avere l’ aggiornamento dei LEDs brillanti.
Come quando prendevo le riviste di elettronica, quasi mai copiavo il progetto intero, ero interessato a prendere spunti per le mie idee.

 

PROVE VISIVE E DOWNLOAD

Non poteva mancare anche la prova del fuoco.
https://www.youtube.com
Quella delle risposte alla seriale con l’ interfaccia collegata.




https://www.youtube.com
Inoltre potete scaricare tutti i file necessari al seguente LINK!!!

Con l’ intento che possa servire alla comunità, divertitevi.




 

[Voti Totali: 0 Media Voti: 0]
Segui la Nostra Pagina Facebook: Facebook

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *