multiwii - Page 4
Discussion fermée
Page 4 sur 4 PremièrePremière 4
Affichage des résultats 91 à 112 sur 112

multiwii



  1. #91
    inviteda892854

    Re : multiwii


    ------

    Il manquerait pas un ; a la fin de la ligne orange ?

    -----

  2. #92
    invite3329a62b

    Re : multiwii

    meme avec le ; j'ai toujours l'erreur donc j'ai mis les //
    autre erreur (sachant que j'ai supprimé tous ce qui se rapporté à Xpos)

    cannot find anything named" i"


    import processing.serial.*;

    Serial myPort;

    int j = 0;

    int counter = 0;


    float[] roll;

    roll = new float[width];

    void setup () {

    size(1000, 500);

    println(Serial.list());



    myPort = new Serial(this, Serial.list()[0], 9600);

    myPort.bufferUntil('\n');

    background(0);
    }
    void draw () {

    stroke(255,255,0);
    for (int i = roll.length-1; i > 0; i--) {
    roll[i] = roll[i-1];
    }

    //for(int i = 1; i < roll.length; i++) {
    line(i, roll[i], i-1, roll[i-1]);
    }



    void serialEvent (Serial myPort) {

    // get the ASCII string:
    String inString1 = myPort.readStringUntil('\n');

    if (inString1 != null) {
    //trim off any whitespace:
    inString1 = trim(inString1);
    // convert to an int and map to the screen height:
    float inByte = float(inString1);
    inByte = map(inByte, 0, 1023, 0, height/2);

    switch(counter){
    case 0:
    roll = inByte;
    counter++;
    break;

    }

    }

    }

    après quand je mets i=0;

    j'ai comme erreur connot convert from float to float[] sur roll = inByte;

  3. #93
    inviteda892854

    Re : multiwii

    En programmation, on ne peut pas (dans la plupart des cas), affecter un variable d'un type a une variable d'un autre type.
    C'est possible dans certains cas, et avec certaines conséquence :

    Mettre un float (decimal) dans un int (entier) fait que tu perds la partie décimal.

    float a = 12.6;
    int b = 0;

    b = a;

    b vaudra 12.

    Par contre, il est impossible de mettre un type tableau dans un autre type.
    Peut être que le processing autorise cela, mais ça m'étonnerais !


    Dernier conseil : Je te conseil FORTEMENT d'utiliser un traducteur anglais -> français (google trad, reverso ...).
    Traduit les messages d'erreur, il t'informeront de ce que tu dois faire pour rectifier le code.

  4. #94
    invite3329a62b

    Re : multiwii

    OK , merci

    je vais essayé de continuer

  5. #95
    invite3329a62b

    Re : multiwii

    Salut , voilà j'ai un code me permettant de réaliser les courbes mais je ne comprends pas la partie extraction des données de l’interface arduino .
    Voici la partie du code Processing qui me gène .

    // this gets called at the top of each draw cycle to first and foremost
    // get the data into place
    void 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;
    }
    Pourquoi elle me gène ? Car si je n'utilise pas la librairie Wiichuck , je ne n'obtient aucunes courbes
    Je m'explique
    si je n'ais pas ça dans arduino je n'obtiens rien ??

    Serial.print(chuck.readRoll()) ;
    Serial.print(";");
    Serial.print(chuck.readPitch() );
    Serial.print(";");
    Serial.print((int)chuck.readAc celX());
    Serial.print(";");
    Serial.print((int)chuck.readAc celY());
    Serial.print(";");
    Serial.print((int)chuck.readAc celZ());
    Serial.print(";");
    Serial.print((int)chuck.readJo yX());
    Serial.print(";");
    Serial.print((int)chuck.readJo yY());
    Serial.print(";");
    Serial.print((int)chuck.cPress ed());
    Serial.print(";");
    Serial.print((int)chuck.zPress ed());
    Serial.println();

    je voudrais calculer roll avec une moyenne et observer la coube de roll moyenne
    mais dans ce cas je ne peut pas faire Serial.print(roll);
    Je ne comprends pas pourquoi, ma partie du code processing est spécifique au lignes Serial énoncées.
    et je ne comprends pas pourquoi

    merci

  6. #96
    invite1d577638

    Re : multiwii

    Déjà expliqué... Si tu ne mets pas de Serial.print, la arduino n'envoie rien, donc Processing ne récupère rien...

    Ton code Processing est conçu pour récupérer 3 valeurs par relevés. Il trace 3 courbes, pas plus, pas moins. Si tu en envoie plus, ça va plus marcher.

    Je ne comprends pas ton histoire de moyenne, mais il semble préférable de calculer cette moyenne coté Arduino, puis envoyer les valeurs correctes à Processing.

  7. #97
    invite3329a62b

    Re : multiwii

    Bonjours et merci pour ta réponse .

    Si tu ne mets pas de Serial.print, la arduino n'envoie rien, donc Processing ne récupère rien...
    Je ne vois pas ou c'est que t'en déduis que je n'ais pas mis les Serial.print() dans le code arduino car je t'ai mit la partie du code arduino et il n'y a que des Serial.print()


    Il trace 3 courbes, pas plus, pas moins.
    Peux tu m'expliquer comment tu le déduis ??
    J'ai testé mon code et je sais déja que je peux obtenir 5 courbes : 3 accé , roll et pitch !

    confère

    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];
    pour information les chiffres correspondent au lignes de Serial.print dans arduino
    en claire, le 1ere ligne de seriel.print comme tu as put le voir dans mon code précédent est Serial.print(chuck.readRoll()) ;
    donc rollValues[smoothCount] correspondra à roll

    calculer cette moyenne coté Arduino, puis envoyer les valeurs correctes à Processing.
    oui , ça j'ai compris mais je n'arrive pas à l'afficher sur processing
    Je ne comprends pourquoi ??


    en claire , si j'ai ca dans mon code arduino

    int16_t accelX = ((data[2] << 2) + ((data[5] >> 2) & 0x03) - ZEROX);

    et que je remplace dans mes lignes serial.print() énoncées précedement

    Serial.print((int)chuck.readAc celX());
    Serial.print(";");


    par

    Serial.print(accelX);
    Serial.print(";");

    meme si accelX prends des valeurs dans le moniteur série
    je ne visualise pas la courbe avec mon code processing

    J'ai l'impression que mon code processing est spécifique à la librairie wiichuck ?? et je ne comprends pas pourquoi car si dans les Serial.print()
    j'ai autre chose que chuck.readAc celX()) , chuck.readAccelY()) .... comme accelX , roll alors processing n'affiche pas de courbes , bien que ces roll ,accelX.....
    ont des valeurs qui varient au cours du temps dans le moniteur série ??

    je suis encore là

  8. #98
    invite1d577638

    Re : multiwii

    Si tu ne mets pas de Serial.print, la arduino n'envoie rien, donc Processing ne récupère rien...
    C'est une affirmation, ni plus ni moins.


    Peux tu m'expliquer comment tu le déduis ??
    En analysant le code... Surtout dans le serial event et dans la partie tracé. Tout est prévu pour gérer trois courbes uniquement.


    J'ai testé mon code et je sais déja que je peux obtenir 5 courbes : 3 accé , roll et pitch !
    Oui, bien sûr, en modifiant les deux codes tu peux faire tout ce que tu veux...
    Histoire qu'on y passe pas encore 20 pages, je te conseille (déjà dit mais bon...) d'écrire clairement ce que tu veux obtenir au final pour ce projet, et ne pas rajouter des trucs au fur et à mesure en fonction... Genre tu arrêtes un nombre de courbes à tracer, et tu t'en tiens à ça. Car sinon, dans 6 mois on y est encore... et tu fatigues tout le monde. Et c'est pas en changeant de pseudo que ça va arranger les choses.


    meme si accelX prends des valeurs dans le moniteur série
    je ne visualise pas la courbe avec mon code processing
    ça, ça sent le problème de conversion string -> float-> integer. Étudie du coté Processing comment est faite la conversion, il y a sûrement un problème de ce coté là. En clair, les données reçues sont des caractères (string) il faut alors à un moment les convertir en valeur numérique (entier ou à virgule). Si jamais tu tentes de convertir une chaine de caractères qui n'est pas un nombre, souvent tu te retrouves avec des zéros en sortie. ça peut par exemple venir d'un séparateur mal géré (virgule ou point). Pour en être sûr, tu peux ajouter des "print" dans le code Processing afin de faire un peu de débuggage et voir où ça coince.

  9. #99
    invite1d577638

    Re : multiwii

    Il est évident que l'on ne se comprends pas . Et cela est surement due à la complexité de se faire comprendre par message et non directement
    Hé oui, tu es sur un forum, pas sur un chat... Et c'est bien pour ça que t'ai encore demandé dans le post précédent d'écrire clairement ce que tu veux que tes codes fassent : tracer X courbes avec X données.

    Vu que l'on ne sait pas ce que tu veux au final, on avance pas ! Si ton projet à besoin de 5 courbes, ok, tu modifies le code Processing qui en contient actuellement 3, tu décides de ce que tu veux comme type de tracé (cf stockage de valeurs si besoin). Une fois que ce code est prêt, tu n'y touches plus !. Dans le même temps tu adaptes le code arduino. Une fois tout cela prêt, tu lances les 2 en même temps, et tu débugges.

    Tu me donne du code "qui marche". C'est à dire ? Qui marche avec quelles données, dans quelles conditions ? Je considère que le code "marche" quand il répond au cahier des charges, cahier des charges qui n'est pas formulé.

    Met y un peu du tien ! C'est pas mon projet, c'est pas à moi de te tirer les vers du nez !

    Ps : Il est inutile de m'envoyer des MPs, ça facilite pas du tout les échanges !

    On en est encore et toujours aux mêmes problèmes, je sens que je vais encore une fois laisser tomber...!

  10. #100
    invite3329a62b

    Re : multiwii

    Tu me donne du code "qui marche". C'est à dire ? Qui marche avec quelles données, dans quelles conditions ? Je considère que le code "marche" quand il répond au cahier des charges, cahier des charges qui n'est pas formulé.
    But: obtenir des courbes dans processing avec mon code processing sans utiliser la librairie wiichuck dans mon code arduino.


    Voila mon code marche seulement si j'utilise la librairie Wiichuck dans mon code ardui
    donc j'utilise juste les données brutes comme suis
    CODE 1
    #include "Wire.h"
    #include "WiiChuck.h"


    WiiChuck chuck = WiiChuck();



    void setup() {
    //nunchuck_init();
    // nunchuck_setpowerpins();
    Serial.begin(115200);
    chuck.begin();
    chuck.update();
    }



    void loop() {


    chuck.update();

    Serial.print(chuck.readRoll()) ;
    Serial.print(";");
    Serial.print(chuck.readPitch() );
    Serial.print(";");
    Serial.print((int)chuck.readAc celX());
    Serial.print(";");
    Serial.print((int)chuck.readAc celY());
    Serial.print(";");
    Serial.print((int)chuck.readAc celZ());
    Serial.print(";");
    Or moi je voudrais coder dans arduino mes accé , roll et pitch par calcule sans la librairie wiichuck et obtenir les courbes correspondantes avec le code arduino que tu as pu voir .
    Mais j'ai codé comme tu peux le voir dans la suite (pour info , dans le moniteur série ,les valeurs varient)mais je n'obtiens pas les courbes avec le même code dans processing .
    D’où ma question , je ne comprends pas pourquoi je n'obtiens rien . y a t-il plus coincidence entre le code processing que tu as pu voir et le code qui suis??


    CODE 2


    #include <Wire.h>;
    #define WII_NUNCHUK_I2C_ADDRESS 0x52
    uint8_t counter;
    uint8_t data[6];

    int accelX,accelY,accelZ,roll,pitc h;

    void setup() {
    Serial.begin(115200);

    Wire.begin();
    Wire.beginTransmission(WII_NUN CHUK_I2C_ADDRESS);
    Wire.write(0xF0);
    Wire.write(0x55);
    Wire.endTransmission();

    Wire.beginTransmission(WII_NUN CHUK_I2C_ADDRESS);
    Wire.write(0xFB);
    Wire.write(0x00);
    Wire.endTransmission();
    }


    void loop() {

    Wire.requestFrom(WII_NUNCHUK_I 2C_ADDRESS, 6);
    counter = 0;
    while(Wire.available()) {
    data[counter++] = Wire.read();
    }


    Wire.beginTransmission(WII_NUN CHUK_I2C_ADDRESS);
    Wire.write(0x00);
    Wire.endTransmission();

    if(counter >= 5){


    int16_t accelX = ((data[2] << 2) + ((data[5] >> 2) & 0x03));
    int16_t accelY = ((data[3] << 2) + ((data[5] >> 4) & 0x03));
    int16_t accelZ = ((data[4] << 2) + ((data[5] >> 6) & 0x03));

    int joyX = ((data[0]));
    int joyY = ((data[1]));


    int16_t pitch = (atan2(-accelY, accelZ)*180.0)/M_PI;
    int16_t roll = (atan2(accelX, sqrt(accelY*accelY + accelZ*accelZ))*180.0)/M_PI;


    Serial.print(roll);
    Serial.print("\n");
    Serial.print(pitch);
    Serial.print("\n");
    Serial.print(accelX);
    Serial.print("\n");
    Serial.print(accelY);
    Serial.print("\n");
    Serial.print(accelZ);
    Serial.print("\n");
    Serial.print(joyX);
    Serial.print("\n");
    Serial.print(joyY);
    Serial.print("\n");


    delay(1);
    }
    }

    }

    Pour résumer ,pourquoi le code 1 (arduino avec librairie Wiichuck) marche (donc j'obtiens des courbes sur processing) avec le code processing ( que tu as pu voir ) alors que le code 2 je n'obtiens rien ??

  11. #101
    invite1d577638

    Re : multiwii

    But: obtenir des courbes dans processing avec mon code processing sans utiliser la librairie wiichuck dans mon code arduino.
    C'est pas un cahier des charges ça ! Je veux savoir ce que le programme doit tracer, et avec quels paramètres !!! Une courbe avec telle info, une autre avec telle info...

    Pour tes erreurs sous Processing, je t'ai déjà donné des pistes, il faut chercher un peu !

  12. #102
    invite3329a62b

    Re : multiwii

    que le programme doit tracer

    iL DOIT TRACER roll , pitch , accelX, accelY,accelZ

    Pour tes erreurs sous Processing,

    Je n'ai pas parlé d'erreur ,mon code processing marche mais seulement avec le code 1.

    En regardant de plus près , le souci doit venir du CODE 2 car le moniteur série montre des déconnage important
    Je crois que je dois corriger le CODE 2 .Pourtant il coincidé avec la librairie Wiichuck qui suit



    #ifndef WiiChuck_h
    #define WiiChuck_h


    #include "Arduino.h"
    #include <Wire.h>
    #include <math.h>


    // these may need to be adjusted for each nunchuck for calibration
    #define ZEROX 510
    #define ZEROY 490
    #define ZEROZ 460
    #define RADIUS 210 // probably pretty universal

    #define DEFAULT_ZERO_JOY_X 124
    #define DEFAULT_ZERO_JOY_Y 132



    class WiiChuck {
    private:
    uint8_t cnt;
    uint8_t status[6]; // array to store wiichuck output
    uint8_t averageCounter;
    //int accelArray[3][AVERAGE_N]; // X,Y,Z
    int i;
    int total;
    uint8_t zeroJoyX; // these are about where mine are
    uint8_t zeroJoyY; // use calibrateJoy when the stick is at zero to correct
    int lastJoyX;
    int lastJoyY;
    int angles[3];

    bool lastZ, lastC;


    public:

    uint8_t joyX;
    uint8_t joyY;
    bool buttonZ;
    bool buttonC;
    void begin()
    {
    Wire.begin();
    cnt = 0;
    averageCounter = 0;
    // instead of the common 0x40 -> 0x00 initialization, we
    // use 0xF0 -> 0x55 followed by 0xFB -> 0x00.
    // this lets us use 3rd party nunchucks (like cheap $4 ebay ones)
    // while still letting us use official oness.
    // only side effect is that we no longer need to decode bytes in _nunchuk_decode_byte
    // see http://www.arduino.cc/cgi-bin/yabb2/...num=1264805255
    //
    Wire.beginTransmission(0x52); // device address
    Wire.write(0xF0);
    Wire.write(0x55);
    Wire.endTransmission();
    delay(1);
    Wire.beginTransmission(0x52);
    Wire.write(0xFB);

    Wire.write(0x01);
    Wire.write((uint8_t)0x00);

    Wire.endTransmission();
    update();
    for (i = 0; i<3;i++) {
    angles[i] = 0;
    }
    zeroJoyX = DEFAULT_ZERO_JOY_X;
    zeroJoyY = DEFAULT_ZERO_JOY_Y;
    }


    void calibrateJoy() {
    zeroJoyX = joyX;
    zeroJoyY = joyY;
    }

    void update() {

    Wire.requestFrom (0x52, 6); // request data from nunchuck
    while (Wire.available ()) {
    // receive byte as an integer
    status[cnt] = _nunchuk_decode_byte (Wire.read()); //
    cnt++;
    }
    if (cnt > 5) {
    lastZ = buttonZ;
    lastC = buttonC;
    lastJoyX = readJoyX();
    lastJoyY = readJoyY();
    //averageCounter ++;
    //if (averageCounter >= AVERAGE_N)
    // averageCounter = 0;

    cnt = 0;
    joyX = (status[0]);
    joyY = (status[1])
    ;
    for (i = 0; i < 3; i++)
    //accelArray[i][averageCounter] = ((int)status[i+2] << 2) + ((status[5] & (B00000011 << ((i+1)*2) ) >> ((i+1)*2)));
    angles[i] = (status[i+2] << 2) + ((status[5] & (B00000011 << ((i+1)*2) ) >> ((i+1)*2)));

    //accelYArray[averageCounter] = ((int)status[3] << 2) + ((status[5] & B00110000) >> 4);
    //accelZArray[averageCounter] = ((int)status[4] << 2) + ((status[5] & B11000000) >> 6);

    buttonZ = !( status[5] & B00000001);
    buttonC = !((status[5] & B00000010) >> 1);
    _send_zero(); // send the request for next bytes

    }
    }


    // UNCOMMENT FOR DEBUGGING
    //byte * getStatus() {
    // return status;
    //}

    float readAccelX() {
    // total = 0; // accelArray[xyz][averageCounter] * FAST_WEIGHT;
    return (float)angles[0] - ZEROX;
    }
    float readAccelY() {
    // total = 0; // accelArray[xyz][averageCounter] * FAST_WEIGHT;
    return (float)angles[1] - ZEROY;
    }
    float readAccelZ() {
    // total = 0; // accelArray[xyz][averageCounter] * FAST_WEIGHT;
    return (float)angles[2] - ZEROZ;
    }

    bool zPressed() {
    return (buttonZ && ! lastZ);
    }
    bool cPressed() {
    return (buttonC && ! lastC);
    }

    // for using the joystick like a directional button
    bool rightJoy(int thresh=60) {
    return (readJoyX() > thresh and lastJoyX <= thresh);
    }

    // for using the joystick like a directional button
    bool leftJoy(int thresh=60) {
    return (readJoyX() < -thresh and lastJoyX >= -thresh);
    }


    int readJoyX() {
    return (int) joyX - zeroJoyX;

    }

    int readJoyY() {
    return (int)joyY - zeroJoyY;

    }


    // R, the radius, generally hovers around 210 (at least it does with mine)
    // int R() {
    // return sqrt(readAccelX() * readAccelX() +readAccelY() * readAccelY() + readAccelZ() * readAccelZ());
    // }


    // returns roll degrees
    int readRoll() {
    return (int)(atan2(readAccelX(),readA ccelZ())/ M_PI * 180.0);

    }

    // returns pitch in degrees
    int readPitch() {
    return (int) (acos(readAccelY()/RADIUS)/ M_PI * 180.0); // optionally swap 'RADIUS' for 'R()'
    }


    private:
    uint8_t _nunchuk_decode_byte (uint8_t x)
    {
    //decode is only necessary with certain initializations
    //x = (x ^ 0x17) + 0x17;
    return x;
    }

    void _send_zero()
    {
    Wire.beginTransmission (0x52); // transmit to device 0x52
    Wire.write ((uint8_t)0x00); // sends one byte
    Wire.endTransmission (); // stop transmitting
    }

    };


    #endif

  13. #103
    invite1d577638

    Re : multiwii

    C'est quoi "code 1" et "code 2" à la fin ? Tu dois avoir UN code arduino et UN code Processing, point barre.

  14. #104
    invite3329a62b

    Re : multiwii

    C'est quoi "code 1" et "code 2" à la fin ? Tu dois avoir UN code arduino et UN code Processing, point barre.
    J'obtiens déja les courbes que je souhaitais ( avec le code 1 et le code processing que tu as vu ) . Je tiens à le préciser car j'ai l'impression que tu crois que je n'obtiens pas encore les courbes sur processing .
    Là , je parle d'autre chose . J'ai dis que j'obtenais les courbes avec le code 1 ( c'est un code arduino qui utilise la librairie Wiichuck) voir post 100#

    Or moi je veux obtenir les courbes d'après le code 2 , voir post 100# mais il s'avère je n'obtiens pas les courbes sur le même code processing car mon code 2 qui n'utilise pas la librairie Wiichuck est mauvais ( il donne n'importe quoi dans le moniteur série )

    pourtant il était similaire à la librairie wiichuck donc mon code 2 est mauvais et


    dans mon code 1

    int16_t accelX = ((data[2] << 2) + ((data[5] >> 2) & 0x03));
    int16_t accelY = ((data[3] << 2) + ((data[5] >> 4) & 0x03));
    int16_t accelZ = ((data[4] << 2) + ((data[5] >> 6) & 0x03));

    int joyX = ((data[0]));
    int joyY = ((data[1]));

    ces lignes sont similaire à la librairie wiichuck que je donne au post précèdent donc je ne vois pas ou cela cloche

    merci

  15. #105
    invite1d577638

    Re : multiwii

    Si si, t'inquiètes je les ai vues tes courbes...!

    Si ton code arduino est bon, alors tu met à jour Processing pour t'afficher 5 courbes, sinon tu continues à travailler sur le code arduino jusqu'à ce que les valeurs données par le moniteur série te semblent cohérentes.

    Mais un truc que je comprends pas, c'est pourquoi tu veux te passer de cette fameuse librairie, qui semble marcher correctement Tu cherches les emm***des non ?

    Tes histoires de décalage de bits sont étranges... Encore une fois, si tu as un code qui marche, cherche pas plus loin.

  16. #106
    invite1d577638

    Re : multiwii

    Tu ne comprends pas quoi dans "Il est inutile de m'envoyer des MPs" ?

    Poste ici. Ton message est allé cash à la corbeille, pas faute de t'avoir prévenu...

  17. #107
    invite3329a62b

    Re : multiwii

    Voilà , si je teste un code de motion + qui marche ( d'après le moniteur série ). Je n'obtiens aucunes courbes avec mon code processing donc je ne vois pas ou cela cloche car le code proceessing que tu as vu ne semble pas spécifique à la librairie wiichuck .


    Que puis-je faire ?

    but : observer les courbes de roll pitch , yaw sur processing avec le code processing que tu as vu d'après le code qui suis .

    #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);
    }
    Merci d'avance

    PS: je ne pense pas que la modification du code processing apporte quelque chose car il semblerais que quelques soient les donnés dans les Serial.print () le code devrait tracer les courbes .
    Cette fois ci le code marche donc rien n'obtenir n'est pas normal .


    De plus , pense -tu qu'il est possible de mélanger ce code avec un code de nunchuck ??

  18. #108
    invite1d577638

    Re : multiwii

    Attends attends c'est quoi cette histoire de motion ?

    Le rapport avec tout le reste ?

    Si je t'ai demandé un cahier des charges, c'est pour s'y tenir, pas pour rajouter des trucs supplémentaires...

  19. #109
    invite3329a62b

    Re : multiwii

    une motion plus de wii
    c'est ça http://img.diytrade.com/cdimg/114804...otion_Plus.jpg

    elle contient un gyroscope permettant de calculer roll , pitch , yaw .(lorsque je pouge ce truc , j'entraine le mouvement de servo)

    Et je veux par la suite utiliser la nunchuck et la motion plus pour faire bouger des servos d'un bras .
    Sachant qu'il ya beaucoup de servo il me faut plusieurs pitch, roll, et un yaw donc voilà .
    (car il n'est pas préférable de controler plusieurs servo avec le même roll.....
    Peut tu répondre s'il te plait à mes questions du post précédent car je suis encore là .

  20. #110
    invite1d577638

    Re : multiwii

    Pourrais tu pour la dernière fois arrêter un cahier des charges et ne pas rajouter des trucs supplémentaires tout les 2 messages ?

    Je vais laisser tomber si tu ne sais pas ce que tu veux faire ! On mélange Processing, des moyennes, une motion plus, des bouts de code qui marchent, d'autres qui ne marchent pas... Comment tu veux qu'on t'aide ?

  21. #111
    jiherve

    Re : multiwii

    Bonsoir
    Yoruk bonne année et bon courage!
    JR
    l'électronique c'est pas du vaudou!

  22. #112
    gienas
    Modérateur

    Re : multiwii

    Bonjour à tous, mais en particulier Khalil_ et pseudok

    Merci de contacter la modération, pour éclaircir un problème de comptes et d’adresses IP.

    Les derniers messages ont été supprimés et la discussion fermée.

Page 4 sur 4 PremièrePremière 4
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...