fate attenzione quando usate il WMP!! quì Wiimote/Extension Controllers/Wii Motion Plus - WiiBrew dice che ci sono 3 bit (uno per asse) detti di lentezza. Se sono a 0 l'asse è in lettura veloce, quindi sensibilità di 2.27mV/°/s, altrimenti la sensibilità è 0.5mV/°/s.
Quindi la lettura viene fortemente influenzata da questo particolare. In oltre la tolleranza è di 50mV. Il codice che mi son scritto per ricavare la velocità angolare in gradi:
(midValue[] è il valore medio di 1000 letture in fase di calibrazione per ogni asse, numberToVoltage[] = 1.35V/midValue[], ovvero il rapporto per trasformare il valore letto in Volt)
data[0] = ( (((outbuf[3]>>2)<<8) + outbuf[0]) - midValue[0] )*numberToVoltage[0];
data[1] = ( (((outbuf[4]>>2)<<8) + outbuf[1]) - midValue[1] )*numberToVoltage[1];
data[2] = ( (((outbuf[5]>>2)<<8) + outbuf[2]) - midValue[2] )*numberToVoltage[2];
if (abs(data[0]) > 0.05){
if ( outbuf[3] & B00000010 ){
//slow speed
data[0]*=500;
}
else{
data[0]*=2270;
}
}
else{
data[0]=0;
}
if (abs(data[1]) > 0.05){
if ( outbuf[4] & B00000010 ){
//slow speed
data[1]*=500;
}
else{
data[1]*=2270;
}
}
else{
data[1]=0;
}
if (abs(data[2]) > 0.05){
if ( outbuf[3] & B00000001 ){
//slow speed
data[2]*=500;
}
else{
data[2]*=2270;
}
}
else{
data[2]=0;
}