Adaptador mando NUNCHUK de la Wii
Arduino > shelds
El Wiichuck, es un mando adicional para la consola Wii. El mando emplea el bus I2C, por lo que resulta sencillo conectar este mando a nuestro Arduino para tener un control de mano para nuestros proyectos.
El Wiichuck esta compuesto de un acelerómetro de tres ejes, una palanca analógica de 2 ejes y dos botones en un dispositivo pequeño y ergonómico. Al ser fabricado en grandes cantidades para nintendo ha permitido que esté disponible en precios bajos.
El Nunchuk se conecta al mando primario de la Wii por medio de un cable. Podemos cortar este cable y conectarlo a Arduino o, comprar el adaptador disponible en la tienda que se insertan en el conector del Wiichuck y permiten conectarlo sin dañarlo.
El Wii Nunchuk es un mando genial para añadir a nuestros proyectos. Por ejemplo, podemos usarlo para controlar un Zowi con servos, manejar un brazo robótico, un vehículo robot, o lo que se nos ocurra.
Hay algunas librerías que nos van a facilitar mucho la programación. Hay varias aunque todas son bastante parecidas, pero nosotros hemos utilizado esta: WiiNunchuck
Solamente hay que descomprimir el fichero zip y dentro de la carpeta esta todo lo necesario para compilar, adicionalmente se puede instalar copiando la carpeta descargada dentro de la carpeta “libraries” que está en el directorio en el que instalasteis el IDE.
Con el ejemplo podemos ver en el monitor serie las medidas del joystick y si los botones están pulsados o no.
Como veréis, la programación es muy sencilla gracias a la librería que estamos utilizando.
CODIGO DE EJEMPLO#include "Wire.h" //Libreria I2C#include "WiiNunchuck.h" //Libreria WiiNunchuckWiiChuck chuck = WiiChuck(); //Creamos la instancia de WiiNunchuckvoid setup() {Serial.begin(9600);chuck.begin(); //Iniciamos WiiNunchuck}void loop() {delay(20);chuck.update(); //Actualizamos valoresSerial.print("Eje X: "); Serial.print(chuck.readJoyX()); //Eje X del JoystickSerial.print(" ");Serial.print("Eje Y: "); Serial.print(chuck.readJoyY()); //Eje Y del JoystickSerial.print(" ");if (chuck.buttonZ){Serial.print("Z");} //Boton Zelse{ Serial.print("-");}Serial.print(" ");if (chuck.buttonC){Serial.println("C");} //Boton Celse{Serial.println("-");}}