arcerino

Ai bei tempi passati, quando io ero giovane, gli uomini erano veri
uomini, i computer veri computer e la verosomiglianza fisica un
lusso che nessun gioco poteva permettersi, riportare in posizione
un cursore oscillante in modo casuale era considerata
una buona approssimazione di tiro con l'arco.

Avanti veloce ai giorni nostri, ad una riunione del Gl-Como e
ad una domanda da parte del presidente: “Ehi, la fiera è imminente,
che progetto portiamo?”.
Segue momento di panico, dato che il progetto principale del LIFO
non è ancora funzionante e i progetti arduinosi personali
sono fermi in attesa di componenti, ma subito interviene la consapevolezza
del vero Maker “non ti preoccupare, qualcosa ci sarà!”.

Un po' di brainstorming ed una notte di sonno dopo, nel locale
adibito alla raccolta di idee prende forma un progetto:
abbiamo un nunchuk, abbiamo un display, perché non fare
una rievocazione ironico-didattica [1] dei tiri a segno del passato?

Detto, fatto, nasce il progetto arcerino!


[1] e pure buzzword-compliant!


Hardware

lcd

L'hardware è stato assemblato con materiale già acquistato per
altri progetti: la versione in piccolo usa un Olimexino 32U4 (clone
migliorato di Arduino Leonardo funzionante a 3.3V), un display
stile Nokia 3310 ed un Wiimote Nunchuk con relativo adattatore
per il collegamento ad Arduino.

Dato che l'LCD è collegato alla porta UEXT dell'Olimexino
e ne riusa i pin I2C per altre funzioni, è stato necessario
aggiungere un semplice adattatore, realizzato su un ritaglio di millefori,
per redirigere i segnali in questione verso altri pin
e liberare il canale I2C per il Nunchuk.

La versione con uscita tv usa invece un normale Arduino Uno,
una vecchia TV CRT con ingresso composito ed un semplice cavo con due
resistenze per il collegamento, oltre ovviamente ad un secondo Nunckuk
con adattatore.

tv-out

Software

Per il software sono state usate tre librerie esistenti:

wiinunchuck.h (sotto licenza GPLv3+) per leggere i segnali
del Nunchuk, arduino-tvout (sotto licenza MIT) per gestire
l'output su TV e u8glib (sotto licenza BSD) per gestire il display LCD.
Quest'ultima rende il progetto adattabile ad un gran numero
di display presenti sul mercato, anche se potrebbe essere necessario
cambiare parte delle funzioni di disegno dell'interfaccia
per adattarle a diverse risoluzioni.

Per scegliere tra i due output si usa la macro LCD: se è definita vengono
usate la libreria u8glib e le relative funzioni di disegno sullo schermo,
altrimenti arduino-tvout; in questo modo si sono evitati i problemi
relativi all'uso di file multipli con l'IDE di Arduino, pur
mantenendo la logica di gioco in comune.

Il gioco è semplice: si hanno a disposizione 10 frecce; con il joystick
del nunchuk si controlla un mirino che oscilla in modo casuale
e con il tasto Z si lancia la freccia. Alla fine della partita
c'è una schermata riassuntiva di punteggio e rango raggiunto,
e se ne può iniziare una nuova.

Per semplicità si è deciso inizialmente di non implementare forza di tiro,
arco percorso dalla freccia ed effetto del vento, pur presenti
nel gioco dal quale si è presa ispirazione.
Volendo, rimane all'incirca un terzo della memoria dell'arduino
per farlo.

Risultati

player

Come sospettato, la versione con uscita tu TV si è dimostrata
molto più adatta all'uso in fiera, riuscendo nonostante il look
retrò ad attirare l'attenzione di un pubblico di varia età,
compresi giovani.
La sua realizzazione ha anche richiesto molto meno tempo
del previsto, funzionando praticamente al primo tentativo.

La versione su LCD è stata comunque utile da mostrare agli interessati
come esempio della versatilità di Arduino e dell'eterogeneità
della sua comunità.

Ci son state richieste sul motivo per cui non si fossero sfruttati
gli accelerometri per l'interfaccia di gioco: in effetti era stato
fatto un tentativo, ma la cosa risultava molto meno pratica
ed intuitiva del controllo tramite joystick analogico.

Una richiesta insistente dall'interno del gruppo è stata invece
la realizzazione di Pong anziché un tiro a segno: in effetti
l'idea di realizzare altri semplici giochi per le prossime fiere
è sicuramente da prendere in considerazione.

Downloads

Tutto il materiale relativo al progetto è disponibile sul relativo
repository git su gitorious ed è rilasciato sotto licenza GPLv3+.