ARROW GAME CONSOLLE

 

Eccolo qui il giocattolo di Natale per gli amanti del gioco delle freccette….

Tutto nasce da una scommessa con mio figlio: papà invece di fare sempre orologi, perchè non mi fai un totalizzatore punti per il gioco delle freccette ????. (così mi fai risparmiare un pò di soldini per non comprarne uno già fatto !!).

Va bè……proviamo ma non garantisco……

Mi sono messo allora allo studio e girovagando in internet ho preso qualche informazione: le regole sono abbastanza chiare: ho scaricato il pdf della F.I.G.F. (Federazione Italiana Gioco Freccette)  15^ edizione del 1.11.2013, e descrive come regolarsi nel gioco, quali sono i limiti i punteggi ecc: 20 pagine in tutto.

La maggior parte delle informazioni di questo “vademecum” non mi interessavano particolarmente, mi serviva capire il meccanismo di assegnazione dei punteggi.  Così per semplificare una immagine tratta da Wikipedia:

Praticamente: il giocatore lancia una serie consecutiva di tre freccette e per ciascun lancio sottrae da un punteggio base il totale dei punti acquisiti. Il punteggio base parte da 301, 501 o 701 a decrescere fino ad arrivare a zero (o sballare !).

La soluzione adottata (sempre modificabile ovviamente) è volutamente semplice e nel contempo (a mio parere) semplice da usare. 

L’ HARDWARE E IL SOFTWARE:

Premetto che i dispositivi HW sono oggetti di riciclo o cannibalizzati da altri oggetti in disuso per cui il costo per la realizzazione di quello che avete visto nella foto iniziale si limita solo alla tastiera 4×4 a membrana. La parte più impegnativa è stata la costruzione della scatola dato che sono una frana in bricolage per cui le dimensioni delle varie parti non coincidono mai !!.

Cosa serve allora per fare il “giocattolo” semplice ma funzionale ?.

  • Un display sufficientemente ampio per contenere tutte le infomazioni necessarie e in questo caso un LCD/I2C 20×4.
  • Una tastiera per inserire i valori dei punteggi (4×4).
  • Una serie di pulsanti per qualche funzionalità aggiuntiva.
  • Un microcontrollore per il programma di gestione (Arduino NANO)
  • Un alimentatore (5V) per dare vita al tutto. (un caricabatterie è più che sufficiente tramite cavo USB da inserire nel connettore di ArduinoNANO)

Si poteva fare qualcosa di diverso ?….bè certo: il display poteva essere sostituito con due gruppi di 3 display a 7 segmenti: (tre per ogni giocatore limitatamente a due giocatori) ma si complicavano le connessioni al micro. La tastiera difficilmente può essere sostituita in quanto i valori (vedi il bersagli0) sono 20 e una tastiera 4×4 risolve egregiamente il problema.

Ecco come si presenta il bersaglio del gioco: ad ogni spicchio corrisponde un valore che può essere oggetto di moltiplica a seconda dell’anello in cui si trova la freccetta lanciata.

Per mia deformazione professionale ho sempre pensato che qualunque tipo di applicazione “informatica” debba essere facile da usare per l’utente e nel contempo debba metterlo in condizione di non sbagliare e di seguirlo nell’inserimento dei dati (in modo che poi non dica “il computer ha sbagliato !“).

Quindi questo “giocattolo” non è solo un prodotto con un pò di harware intorno ma anche un progetto software con qualche caratteristica personale. Con ciò lungi da me competere con prodotti simili e più performanti: quello realizzato è un “aggeggio” casalingo !.

Vediamo allora (prima di descrivere l’HW) con una serie di immagini come è stato sviluppato il software: ecco la prima immagine appena acceso:

Per prima cosa si inserisce il nome (?) del primo giocatore: tramite la tastiera premendo un tasto numerico il carattere su cui lampeggia il cursore cambia da “A” a “Z” in modo recursivo: premendo “*” si passa al carattere successivo fino al quarto che stabilisce la fine.

Dopo questo inserimento il display presenta la stessa immagine per inserire il nome (?) del secondo giocatore con lo stesso sistema visto con il primo.

Il software di gestione prevede anche la possibilità di memorizzare (EEPROM del micro) uno stato del gioco per poterlo poi riprendere in un secondo tempo. Ciò è possibile con un pulsante specifico della pulsantiera. Per cui all’accensione il display potrebbe presentare la seguente immagine:

Quindi se viene premuto “*” il sistema leggerà dalla EEPROM il nome dei due giocatori e i punteggi relativi al momento della memorizzazione. Premendo “#” il sistema ripartirà da zero e verrà richiesto il nome dei due giocatori come visto in precedenza. Ma i valori memorizzati non vengono cancellati.

Inseriti quindi i nomi  (o recuperati dalla EEPROM) il display richiede la modalità di gioco con la seguente schermata:

Deve essere scelto il target del punteggio tra i valori (standard secondo le regole) 301,501,701.  Successivamente inizia il gioco vero e proprio.

Ecco la schermata di gioco vero e proprio: è stato scelto il target di 301 punti e si parte con il primo giocatore. Ad ogni lancio delle freccette, recuperati i punti ottenuti  questi si possono inserire con il seguente criterio:

Per il primo lancio (cursore lampeggiante) si inserisce il valore attraverso la tastiera digitando anche l’eventuale “zero” (per valori inferiori a 10), quindi si digita anche l’asterisco e successivamente il valore moltiplicatore del punteggio digitato. Questo in quanto a seconda del tipo, il punteggio ottenuto può essere moltiplicato. Immediatamente questo valore viene “sottratto” al target scelto e il cursore si sposterà nel secondo campo (o nel terzo) per l’inserimento del successivo valore. Se per errore si inserisce un valore errato (o digitato male) è sempre possibile cancellare quanto digitato premendo il tasto “CANC” della pulsantiera. Tasto che può essere premuto solo se sono stati inseriti i 4 caratteri richiesti in quanto la digitazione è controllata e pilotata da software.

Inserito anche il terzo valore (eventualmente anche ricorretto) occorre obbligatoriamente passare alla schermata successiva per il secondo giocatore premendo il pulsante “PLR” della pulsantiera. Il processo si ripete e dopo aver inserito l’ultimo valore relativo al secondo giocatore ripremendo il pulsante “PLR” si riparte con il primo giocatore.   La schermata è identica alla precedente con la differenza del nome (Player2) e del suo target finale.

ATTENZIONE: è compito del giocatore “NON SBALLARE” nel senso che il sistema NON contempla la possibilità che il valore inserito sia superiore al valore del target che si decrementa ad ogni lancio di freccette.  (Mia pigrizia: si poteva controllare da programma).

LA PULSANTIERA:

Per le funzionalità aggiuntive si potevano usare i 4 tasti “A,B,C,D” della tastiera a membrana ma ho preferito inserire 4 pulsanti come da foto:

Sono 4 switch che si chiudono a massa quando premuti e hanno il seguente significato:

  • Il tasto “CANC“: serve a cancellare un eventuale valore di punteggio errato. Non viene usato per nessuna altra funzione e viene visto dal programma solo in una determinta fase.
  • Il tasto “PLR“: serve a passare da un giocatore all’ altro e viene visto solo quando è stato inserito anche il terzo punteggio anche se = a zero.
  • Il tasto “SAVE“: serve a memorizzare in EEPROM i valori dei due giocatori per poter riprendere il gioco in un momento successivo.
  • Il tasto “RESALL“: da utilizzare solo e soltanto se si vuole l’azzeramento totale dei punteggi: in pratica resetta il sistema e i valori memorizzati nella EEPROM. (Non è un reset HW ma solo SW).

Le schermate che vengono visualizzate alla pressione dei tasti sono le seguenti:

E’ stato chiesto il salvataggio dei dati: il sistema si blocca e per ripartire occorre premere il tasto “RESET HW” (pulsante inserito lateralmente nella scatola) oppure togliere tensione per poi reinserirla.

E’ sato premuto il pulsante “RESALL“: il sistema cancella la EEPROM e si blocca. Anche in questo caso per ripartire occorre premere il pulsante “RESET HW” o togliere tensione per poi reinserirla.

INSIEME DELL’HARWARE:

Non c’è molto da dire: il microprocessore usato è l’ATMEGA328 cablato sulla board ARDUINO NANO. Date le ridotte dimensioni è preferibile rispetto ad ARDUINO UNO. Come per il fratello maggiore ha “on board” tutti i pin digitali e analogici con due pin in più. L’alimentazione può essere fornita da un semplice caricabatterie da 5V 1/A da connettere all’ingresso USB gestito da un  convertitore RS232 CH340G e che permette in rapido upload dello sketch.

La tastiera usata è del tipo a membrana 4×4 ovvero tutti i tasti numerici con i tasti “*” e “#” e 4 tasti A,B,C,D. Si connette attraverso 8 pin (4 per riga e 4 per colonna) ai pin D2/D9 della board. Una apposita libreria effettua la scansione dei tasti e rilascia il codice ASCII del tasto premuto. Non è bloccante per cui occorre un loop per verificare il tasto premuto o non premuto.

Il display è un LCD 20×4 con interfaccia I2C: è la migliore soluzione in quanto con solo due fili (SCL/SDA) si gestisce senza problemi. Nel contesto è ottimo in quanto i pin digitali sono praticamente tutti occupati: 8 dalla tastiera e 4 dalla pulsantiera per cui si è reso necessario utilizzare il pin “A0” visto come digitale. Non è stato possibile utilizzare il pin 13 che, come riscontrato su forum Arduino presenta problemi specifici proprio sulla board “ArduinoNano”. Ma in pratica occorre un approccio diverso: invece di chiudere a massa lo switch fare l’ inverso: pull_down e chiusura a +5.

Infine la pulsantiera: sono 4 semplici switch connessi ai pin D10,D11,D12,A0 con pull-pup su pcb tramite una restenza da 10k. Chiudono il contatto verso massa quando premuti.

CONCLUSIONE:

La soluzione scelta e i metodi adottati nello sviluppo dello sketch (occupa poco più di 10k) sono sicuramente migliorabili sotto tutti i punti di vista. Ad esempio, si poteva fare ua applicazione in Visual_Basic molto più coreografica avendo a disposizione un intero schermo video e con una gestione dei dati di input più semplificata e controllata. Ma questa soluzione avrebbe comportato l’utilizzo di un PC con relativo monitor, tastiera, mouse, ecc, mentre la soluzione adottata permette una trasportabilità dell’ “aggeggio” dappertutto e dipendente solo da un alimentatore.

Quantomeno,  mio figlio è soddisfatto……….(!)

 

BUON NATALE A TUTTI E FELICE ANNO NUOVO !

gvsoft Dicembre 2017

VOTO
5 commenti
  1. Marcello
    Marcello dice:

    Ottima idea, complimenti anche a tuoi figlio.
    Seguendo i campionati mondiali che si stanno svolgendo in questi giorni, questo articolo arriva puntuale.
    Unica cosa che manca è lo schema del circuito per chi vorrebbe replicarlo.
    Saluti Marcello

    Approvazioni
    • gvsoft
      gvsoft dice:

      Grazie Marcello, ma per quanto riguarda il circuito non c’è uno schema elettrico in quanto le connessioni sono standard verso il micro usato: Arduino NANO a cui va connesso LCD (SDA/SCL) la tastiera (8 pin da D2 a D9) e la pulsantiera (D10,D11,D12,A0). E le connessioni sono fatte via cavetti singoli.
      L’alimentazione è fornita da un caricabatterie connesso all’ingresso USB dell’ARDUINO NANO. L’unico circuito necessario sarebbe quello della pulsantiera ma ognuno è libero di farlo come vuole. Lo sketch descrive le connessioni che possono essere modificate a piacere.
      ciao e buon anno

      Approvazioni
    • gvsoft
      gvsoft dice:

      Grazie Amilcare, ma levami una curiosità: come fai a mettere una foto all’inizio dell’articolo ?. Tra l’ altro non potresti farla più piccola ??
      Ciao Buon anno

      Approvazioni
      • Amilcare
        Amilcare dice:

        Se vai in modifica articolo in basso a destra trovi la “immagine in evidenza”.
        Visto che non ne avevi messa nessuna ho messo una delle tue, se vuoi sostituire la foto con una di tuo gradimento puoi semplicemente farlo scegliendo quella che più ti aggrada

        Approvazioni

Lascia un Commento

Vuoi partecipare alla discussione?
Fornisci il tuo contributo!

Lascia un commento