Written by: on 23/02/2009 @ 08:00

Llevaba tiempo oyendo acerca de la simplicidad de las WiiMoteLib, pero dado que no habia pasado la Wii por mis manos no habia podido tocarlas, por fin tengo el WiiMote en casa, y como es obvio habia que empezar a trastear. Este es un codigo simple de como conectar y hacer unas lecturas del acelerometro, ideal para adentrarse en el manejo de este dispositivo.

Primero conectamos con cualquier programa gestor de dispositivos bluetooth, al WiiMote presionado los botones 1 y 2 a la vez, y lo conectamos como raton, interfaz humana, HID, … o como tu gestor lo denomine.

Ahora toca agregar como referencia a nuestro proyecto la libreria WiimoteLib.dll y empezamos a picar codigo, se declaran variables globales en la clase que estamos programando:


privateWiimote mWiimote;
WiimoteCollection mWC;
privatedelegatevoidUpdateWiimoteStateDelegate(WiimoteChangedEventArgs args);

 

Una vez declarados los objetos con los que trabajaremos declaramos las funciones encargadas de la gestion:

privatevoid ManejaWiiMote()

{


int index = 1;
mWC =
newWiimoteCollection();
try
{

//Buscamos todos los WiiMotes existentes


mWC.FindAllWiimotes();

}

catch (Exception ex)

{

//Aplicamos nuestro protocolo de errores (por ejemplo log4net)

}

 

//Se tratan todos los WiiMote


foreach (Wiimote wm in mWC)

{

// Conectamos con el WiiMote


wm.WiimoteChanged += wm_WiimoteChanged;
wm.Connect();

if (wm.WiimoteState.ExtensionType != ExtensionType.BalanceBoard)
wm.SetReportType(
InputReport.IRExtensionAccel, IRSensitivity.Maximum, true);

//Asignamos el numero de led a encender en WiiMote


wm.SetLEDs(index++);

}

}

void wm_WiimoteChanged(object sender, WiimoteChangedEventArgs e)

{

UpdateState(e);

}

publicvoid UpdateState(WiimoteChangedEventArgs args)

{

 

WiimoteState ws = args.WiimoteState;



//Con el mando como si jugaras al MarioKart
//Y = -0,9 Izquierda -0,0 | 0 | 0,1 Derecha 0,9
//Z = -0,9 Decelera -0,0 | 0 | 0,1 Acelera 0,9



if (ws.AccelState.Values.Y > 0.5)
{

//Has girado el mando a la derecha, puedes llamar las funciones pertinentes a esta accion.

}

if (ws.AccelState.Values.Y < -0.5)
{

//Has girado el mando a la izquierda, puedes llamar las funciones pertinentes a esta accion.

}

if (ws.AccelState.Values.Z > 0.5)
{

//Has girado el mando hacia delante, puedes llamar las funciones pertinentes a esta accion.

}

if (ws.AccelState.Values.Z < -0.5)
{

//Has girado el mando hacia atras, puedes llamar las funciones pertinentes a esta accion.

}

}

 

Desde aqui podeis seguir trabajando con el resto de la informacion que proporciona estas librerias.

 

Catogories: .NET, Software Libre, ThoRo, Wii, Wiimote, Windows

Leave a Reply