Bonjours
J'essaye d'utiliser pocessing mais mon code arduino ne semble pas correct pour être utilisé avec processing .
Contexte: Mon code arduino corresponds à une motion plus de wii et j'aimerais visualiser les courbes de roll , pitch et yaw de cette motion plus sur processing .
Je préviens que le code processing n'est pas donné dans son intégralité ( trop long) mais juste la partie extraction des données
Partie du code processing qui semble ne pas correspondre au code arduino que je vais donner :
et mon code arduinovoid updateAllValues(){
// store previous value
roll[1] = roll[0];
pitch[1] = pitch[0];
accelX[1] = accelX[0];
accelY[1] = accelY[0];
accelZ[1] = accelZ[0];
// get new values in to the array
rollValues[smoothCount] = -(int)sensorValues[0];
pitchValues[smoothCount] = (int)sensorValues[1];
accelXValues[smoothCount] = (int)sensorValues[2];
accelYValues[smoothCount] = (int)sensorValues[3];
accelZValues[smoothCount] = (int)sensorValues[4];
// add up the array
for (int i = 0; i < 3 ; i++){
roll[0] += rollValues[i];
pitch[0] += pitchValues[i];
accelX[0] += accelXValues[i];
accelY[0] += accelYValues[i];
accelZ[0] += accelZValues[i];
}
//average it out
roll[0] /= 3;
pitch[0] /=3;
accelX[0] /=3;
accelY[0] /=3;
accelZ[0] /= 3;
smoothCount ++;
if (smoothCount == 3){
smoothCount = 0;
}
}
PS: le moniteur série du code arduino donne bien des valeurs qui varie donc il semblerais que les 2 codes ne soient pas liés#include <Wire.h>
byte data[6];
int val;
int yaw, pitch, roll;
int yaw0, pitch0, roll0;
int deltapitch = 0;
int deltayaw = 0;
void wmpOn()
{
Wire.beginTransmission(0x53);
Wire.write(0xfe);
Wire.write(0x04);
Wire.endTransmission();
}
void wmpSendZero()
{
Wire.beginTransmission(0x52);
Wire.write(0x00);
Wire.endTransmission();
}
void calibrateZeroes()
{
for (int i=0;i<10;i++)
{
wmpSendZero();
Wire.requestFrom(0x52,6);
for (int i=0;i<6;i++)
{
data[i]=Wire.read();
}
yaw0+=(((data[3]>>2)<<8)+data[0])/10;
roll0+=(((data[4]>>2)<<8)+data[1])/10;
pitch0+=(((data[5]>>2)<<8)+data[2])/10;
}
}
void receiveData()
{
wmpSendZero();
Wire.requestFrom(0x52,6);
for (int i=0;i<6;i++)
{
data[i]=Wire.read();
}
yaw=(((data[3]>>2)<<8)+data[0]-yaw0)-2;
roll=(((data[4]>>2)<<8)+data[1]-roll0);
pitch=(((data[5]>>2)<<8)+data[2]-pitch0)-8;
}
void setup()
{
Serial.begin(115200);
Serial.println("WM+ tester");
Wire.begin();
wmpOn();
calibrateZeroes(); /
delay(1000);
}
void loop()
{
receiveData();
Serial.print("\n");
Serial.print(roll);
Serial.print("\n");
Serial.print(pitch);
Serial.print("\n");
Serial.print(yaw);
delay(100);
}
La partie du code qui manque correspond juste à de l'affichage strike ( ) line().... donc c'est la partie que je vous ais donnée qui me fait défaut .
merci de toute aide
-----