martes, 12 de junio de 2012

Combinando Wii Nunchuck y Arduino

Una de las cosas que quería hacer desde que empecé a trastear con Arduino era conectar el mando Nunchuck de la Wii y poder interactuar con él.

¿Porqué el mando Nunchuck? Por tiene un acelerómetro con el que podemos obtener datos del movimiento del mando, un joystic analógico, y dos botones ... TODO INTEGRADO!!!! y además porque el consumo es bastante poco, con 3,3V funciona a la perfección.

El montaje es bastante "fácil", más de lo que pensaba, ya que del conector del mando tan solo nos hacen falta 4 pines, Voltaje, Reloj, Datos y Masa. La conexión por lo tanto sería Voltaje y Masa a los conectores de 3,3V y Gnd de Arduino y Datos y Reloj a los pines SDA y SCL, (hay que tener en cuenta que en el Arduino UNO están etiquetados por la parte de abajo, en el resto no lo se):


En cuanto al código, ya es más complicado, aunque he tenido bastante suerte y he encontrado por Internet una librería que funciona genial, (Web de Gabriel Bianconi), adaptada al Arduino UNO.

Con todo esto ya tenía la librería para controlar el Nunchuk, un programa de Demo, (que venía con la librería), para ver los datos recogidos por el Arduino en la pantalla, y el montaje físico realizado, (en la foto se ve un cartón que utilicé para que los  cables se quedaran fijos haciendo conexión en el mando, ya que aún no he acabado el conector casero que estoy haciendo).


Luego seguí buscando un código para el Processing, de forma que pudiese recoger los datos del Arduino con el ordenador y representarlos en pantalla de alguna forma, y encontré un código que mostraba un cubo 3D RGB preparado para usarse con el Nunchuck, (5th and Penn).

Solo tuve que hacer unos pequeños cambios de programación para que el programa utilizado en Processing y el programa cargado en el Arduino se entendiesen, el resultado fue que podía manejar el cubo desde el mando usando los valores del acelerómetro.


En la siguiente captura se pueden ver los datos que aparecían por pantalla:


Como se pueden ver son 5 números, os 3 primeros de 3 cifras y los dos últimos de 1 cifra cada uno. El primer número indica el valor del acelerómetro en el eje X, el segundo número indica el valor del acelerómetro en el eje Y,  el tercer número es el valor del acelerómetro en el eje Z, el cuarto valor, (solo puede ser 1 o 0), indica si se ha pulsado el botón z del mando y el último número, (que al igual que el anterior solo puede ser 1 o 0), indica si el botón c ha sido pulsado.

Para acabar esta entrada, quería dar las gracias a todos aquellos que dedican horas a desarrollar código que luego "cuelgan" desinteresadamente en Internet, para que otros podamos aprovechar su trabajo ahorrándonos muchísimo tiempo y muchísimos quebraderos de cabeza.

No hay comentarios:

Publicar un comentario

Gracias por comentar