¡Bienvenid@ a La bloguera.net! Iniciar sesión | ÚNETE a la web | Ayuda





 
Controlar WiiMote desde C#

     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:

private Wiimote mWiimote;
WiimoteCollection mWC;
private delegate void UpdateWiimoteStateDelegate(WiimoteChangedEventArgs args);

 

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

private void ManejaWiiMote()

{

int index = 1;
mWC =
new WiimoteCollection();
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);

}

public void 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.

 

Posted: lunes, 23 de febrero de 2009 8:00 por Thempra

Comentarios

meneame.net ha opinado:

CyP: 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

# mayo 13, 2009 15:39
No se permiten comentarios de usuarios anónimos