aboutsummaryrefslogtreecommitdiff
path: root/docs/articolo_glcomo.txt
blob: 69f9dcb76c6a7749625f3806d2f72fca61b8e0ca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
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