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 [#ironico]_ dei tiri a segno del passato? Detto, fatto, nasce il progetto arcerino! .. [#ironico] e pure buzzword-compliant! Hardware -------- 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. .. _`Olimexino 32U4`: https://www.olimex.com/Products/Duino/AVR/OLIMEXINO-32U4/ .. _`Arduino Leonardo`: http://arduino.cc/en/Guide/ArduinoLeonardo .. _display: https://www.olimex.com/Products/Modules/LCD/MOD-LCD3310/ .. _adattatore: http://www.dfrobot.com/index.php?route=product/product&filter_name=wiichuck&product_id=91 .. _UEXT: https://www.olimex.com/Products/Modules/ .. _`Arduino Uno`: http://arduino.cc/en/Main/ArduinoBoardUno 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. .. _wiinunchuck.h: http://www.timteatro.net/2012/02/10/a-library-for-using-the-wii-nunchuk-in-arduino-sketches/ .. _`arduino-tvout`: https://code.google.com/p/arduino-tvout/ .. _u8glib: https://code.google.com/p/u8glib/ 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 --------- 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. .. _Pong: https://en.wikipedia.org/wiki/Pong Downloads --------- Tutto il materiale relativo al progetto è disponibile sul relativo `repository git`_ su gitorious ed è rilasciato sotto licenza GPLv3+. .. _`repository git`: https://gitorious.org/progetti-gl-como/arcerino