viernes, 17 de junio de 2016

Lectura de mando clásico de WII con Arduino

En esta entrada os dejare la librería y un ejemplo que permite hacer una lectura del mando clásico de WII el cual podréis utilizar luego en futuros proyectos. Esta librería la cree yo modificando una ya existente destinada a la lectura del Nunchuk o Wiichuck.


Librería mando clásico: WiiClassic
Librería original nunchuck: Wiichuck
Ejemplo de lectura de ambas librerías: Ejemplos

Ahora os explicare por encima las funciones más comunes de estas librerías y como seria la conexión de los mando con el Arduino:

La comunicación del mando se realiza por el protocolo I2C, aquí os dejo una imagen con los pines correspondientes a DAT, CLK, VCC(conectar a 3.3V) y GND:

Comencemos con el código:

Como con todas las librerías nuevas lo primero es incluirla en la cabecera del programa, una vez incluida tendremos que declarar el nombre de nuestro mando:

#include <WiiClassic.h>
#include <Wire.h>
WiiClassic classic = WiiClassic();// En mi caso lo nombre como classic

Una vez nombrado tendremos que iniciarlo dentro del void setup():

void setup() 
{
  Serial.begin(9600);
  classic.begin();//Inicia la comunicación
  classic.update();//Actualiza el estado de los botones y sensores
  delay(2000);
}

Ahora que la comunicación ya esta iniciada podremos leer el estado de los botones y de los sensores dentro del void loop():

void loop() 
{  
  classic.update();
  Serial.println("-----------------------");
  Serial.print("Boton L: "); Serial.print((int)classic.LecturaLB()); Serial.println();
  Serial.print("Potenciómetro L: "); Serial.print((int)classic.readL()); Serial.println();
  Serial.print("Boton ZL: "); Serial.print((int)classic.LecturaZL()); Serial.println();
  Serial.println();
  Serial.print("Boton arriba: "); Serial.print((int)classic.LecturaArriba()); Serial.println();
  Serial.print("Boton abajo: "); Serial.print((int)classic.LecturaAbajo()); Serial.println();
  Serial.print("Boton derecha: "); Serial.print((int)classic.LecturaDerecha()); Serial.println();
  Serial.print("Boton izquierda: "); Serial.print((int)classic.LecturaIzquierda()); Serial.println();
  Serial.println();
  Serial.print("Joystick Derecho X: "); Serial.print((int)classic.readJoyRX()); Serial.println();
  Serial.print("Joystick Derecho Y: "); Serial.print((int)classic.readJoyRY()); Serial.println();
  Serial.println();
  Serial.println();
  Serial.print("Boton Menos: "); Serial.print((int)classic.LecturaMenos()); Serial.println();
  Serial.print("Boton Home: "); Serial.print((int)classic.LecturaHome()); Serial.println();
  Serial.print("Boton Mas: "); Serial.print((int)classic.LecturaMas()); Serial.println();
  Serial.println();
  Serial.print("Joystick Izquierdo X: "); Serial.print((int)classic.readJoyLX()); Serial.println();
  Serial.print("Joystick Izquierdo Y: "); Serial.print((int)classic.readJoyLY()); Serial.println();
  Serial.println();
  Serial.print("Boton a: "); Serial.print((int)classic.LecturaA()); Serial.println();
  Serial.print("Boton b: "); Serial.print((int)classic.LecturaB()); Serial.println();
  Serial.print("Boton x: "); Serial.print((int)classic.LecturaX()); Serial.println();
  Serial.print("Boton y: "); Serial.print((int)classic.LecturaY()); Serial.println();
  Serial.println();
  Serial.print("Boton R: "); Serial.print((int)classic.LecturaRB()); Serial.println();
  Serial.print("Potenciómetro R: "); Serial.print((int)classic.readR()); Serial.println();
  Serial.print("Boton ZR: "); Serial.print((int)classic.LecturaZR()); Serial.println();
  Serial.println("-----------------------");
  delay(500);
}

1 comentario: