multiwii - Page 2
Discussion fermée
Page 2 sur 4 PremièrePremière 2 DernièreDernière
Affichage des résultats 31 à 60 sur 112

multiwii



  1. #31
    invite274e2619

    Re : multiwii


    ------

    veux tu de l'aide pour ton code .??

    -----

  2. #32
    invite3329a62b

    Re : multiwii

    tiens voici le code ardui
    le code processing est en page 1 du post

    #include <Wire.h>




    byte data[6];
    int val;
    int yaw, pitch, roll;
    int yaw0, pitch0, roll0;




    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(9600);
    Serial.println("WM+ tester");
    Wire.begin();
    wmpOn();
    calibrateZeroes();
    delay(1000);
    }

    void loop()
    {
    receiveData();
    Serial.print("yaw:");
    Serial.print(yaw);
    Serial.print(" pitch:");
    Serial.print(pitch);
    Serial.print(" roll:");
    Serial.print(roll);


    delay(100);
    }

  3. #33
    invite1d577638

    Re : multiwii

    Bon laisse tomber les changements de pseudo, tu es ridicule... Pour info, je reçois une notification par mail dès que tu postes, et qui contient le message d'origine, sans les modifs...

    Je jette un oeil au code Processing. Tu es sûr de ton port COM ?

  4. #34
    invite3329a62b

    Re : multiwii

    Je jette un oeil au code Processing. Tu es sûr de ton port COM ?
    sur arduino , j'ai COM 3
    mais quand je lance mon code sur processing l'erreur est : error opening Serial Port 3

  5. #35
    invite1d577638

    Re : multiwii

    Exécute ce code dans Processing et fait un screenshot, surtout la partie en bas de l'écran :

    Code:
    import processing.serial.*;
    
    // The serial port:
    Serial myPort;       
    
    // List all the available serial ports:
    println(Serial.list());

  6. #36
    invite3329a62b

    Re : multiwii

    pas besoin d' impression d'écran

    il y a juste écrit COM3

  7. #37
    invite1d577638

    Re : multiwii

    Tente ça :

    Code:
    //
    
    
    import processing.serial.*;
    
    Serial myPort; // The serial port
    int xPos = 1; // horizontal position of the graph
    int j = 0;
    
    int counter = 0;
    
    float roll;
    float pitch;
    float yaw;
    
    void setup () {
      // set the window size:
      size(1000, 500);
    
      // List all the available serial ports
      println(Serial.list());
      // I know that the first port in the serial list on my mac
      // is always my Arduino, so I open Serial.list()[0].
      // Open whatever port is the one you're using.
      
      myPort = new Serial(this, Serial.list()[0], 9600); 
      
      // don't generate a serialEvent() unless you get a newline character:
      myPort.bufferUntil('\n');
      // set inital background:
      background(0);
    }
    void draw () {
    
      stroke(255, 255, 0);
      line(xPos, (height/2), xPos, (height/2)-0 - roll/12);
    
      stroke(0, 255, 255);
      line(xPos, (height/2)-150, xPos, (height/2)-150 - pitch/12);
    
      stroke(255, 0, 255);
      line(xPos, (height/2)+150, xPos, (height/2)+150 - yaw/12);
    
      if (xPos >= width) {
        xPos = 0;
        background(0);
      } else {
        // increment the horizontal position:
        xPos++;
      }
    }
    
    
    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;
        case 1:
          pitch = inByte;
          counter++;
          break;
        case 2:
          yaw = inByte;
          counter = 0;
          break;
        }
      }
      // at the edge of the screen, go back to the beginning:
    }

  8. #38
    invite3329a62b

    Re : multiwii

    J'obtiens toujours la même chose ( 3 droites constantes de couleurs différentes )

    Merci quand même.

  9. #39
    invite1d577638

    Re : multiwii

    T'es sûr que la arduino envoie des données qui varient ?

    Donne le lien de la page sur laquelle tu as trouvé les 2 codes svp. J'ai un mauvais pressentiment...

  10. #40
    invite3329a62b

    Re : multiwii

    T'es sûr que la arduino envoie des données qui varient ?
    Je vérifie à chaque fois que dans le moniteur série que j'ai des variables qui varient lorsque je bouge la manette.
    Envoyer est un très grand mot , j'ai l'impression que la arduino n’envoie rien du tout

    De plus , lorsque je débranche le port USB, les 3 courbes évoluent de la meme manière (3 courbes constantes qui s'affichent au cours du temps alors que j'ai débranché le port USB)

    Faut il que je ferme l'interface arduino?avant de lancer processing
    Mon problème se situe dans la réception des informations de la carte arduino par processing donc je crois que je m'y prends mal.

    Désolé , je n'ai pas les pages car sa fait longtemps que je les ais

  11. #41
    invite1d577638

    Re : multiwii

    Citation Envoyé par Khalil_ Voir le message
    Je vérifie à chaque fois que dans le moniteur série que j'ai des variables qui varient lorsque je bouge la manette.
    Envoyer est un très grand mot , j'ai l'impression que la arduino n’envoie rien du tout
    Utilise ton cerveau, si les infos apparaissent dans le moniteur, c'est que la carte envoie bien des choses...

    Citation Envoyé par Khalil_ Voir le message
    De plus , lorsque je débranche le port USB, les 3 courbes évoluent de la meme manière (3 courbes constantes qui s'affichent au cours du temps alors que j'ai débranché le port USB)
    Normal, tu perturbes la liaison série lors de la déconnection. Le code processing lit alors un peu n'importe quoi.

    Citation Envoyé par Khalil_ Voir le message
    Faut il que je ferme l'interface arduino?avant de lancer processing
    O U I

    Citation Envoyé par Khalil_ Voir le message
    Mon problème se situe dans la réception des informations de la carte arduino par processing donc je crois que je m'y prends mal.
    Eh oui !

    Citation Envoyé par Khalil_ Voir le message
    Désolé , je n'ai pas les pages car sa fait longtemps que je les ais
    Tu veux mon avis ? Je suis quasi sûr que les 2 codes proviennent de deux endroits complètements différents !

  12. #42
    invite3329a62b

    Re : multiwii

    Non, les 2 codes coïncident .

    et j'obtiens finalement quelque choses . Des courbes qui varient au cours du temps .

  13. #43
    invite3329a62b

    Re : multiwii

    Ce n'est pas vraiment des courbes mais j'obtiens bien une représentation graphique des variables au cours du temps .

    Merci pour ton aide.

  14. #44
    invite1d577638

    Re : multiwii

    Citation Envoyé par Khalil_ Voir le message
    Non, les 2 codes coïncident .
    Qu'est-ce qui te fait dire ça ?

    Citation Envoyé par Khalil_ Voir le message
    et j'obtiens finalement quelque choses . Des courbes qui varient au cours du temps .
    Screenshot (pour ma culture) ?

    Bon, tant mieux si ça marche...

  15. #45
    invite3329a62b

    Re : multiwii

    voila , j essayerais d'améliorer l'affichage pour que ce soit exploitable .

    Nom : pain 2.jpg
Affichages : 51
Taille : 78,2 Ko

    Merci encore pour ton aide

  16. #46
    invite1d577638

    Re : multiwii

    En modifiant le code Processing, tu peux effectivement changer les gains afin de mieux cadrer les courbes dans ta fenêtre...

  17. #47
    invite3329a62b

    Re : multiwii

    Voit-tu comment les cadrer ??

  18. #48
    invite1d577638

    Re : multiwii

    Déjà, isole du programme les 3 lignes qui correspondent à un tracé.

  19. #49
    invite3329a62b

    Re : multiwii

    Bonjours ,

    j'ai trouvé pourquoi je n'obtenais rien . Il manquait le \n dans chaque Seriel.print(" ") dans le code arduino.

    isole du programme les 3 lignes qui correspondent à un tracé.
    size( , )

    stroke(......)
    line(......)

  20. #50
    invite1d577638

    Re : multiwii

    C'est uniquement la fonction line qui nous intéresse.

    Étudie ses paramètres, et tu devrais comprendre lesquels modifier pour modifier le rendu du tracé de tes courbes.

  21. #51
    invite3329a62b

    Re : multiwii

    Oui , j'ai déjà consulté cette page mais je n'ai pas plus compris car

    on y fait réference d'un line(x1,x2,x3,x4) avec x1,x2, x3,x4 des points mais moi , j'ai des variables ce qui complique

    line(1, (height/2), 1, (height/2)-0 - roll/12) ; avec roll= une variable

    déja , je ne comprends pas à quoi sert le hight et pourquoi on a placée le roll à la place de x4




    Merci d'avoir quand même pensé à moi

  22. #52
    invite1d577638

    Re : multiwii

    Houlà, si 4 coordonnées dans le plan te font peur on est mal...

    height, c'est une variable qui retourne la hauteur de ta fenêtre. (Lire le manuel et faire une recherche est difficile, je sais). Donc si tu divises la hauteur par 2, tu centres la courbe concernée verticalement.

  23. #53
    invite3329a62b

    Re : multiwii

    pourquoi on a placée le roll , pitch et yaw à la place de x4??

  24. #54
    invite1d577638

    Re : multiwii

    Tu as fait des maths...?

  25. #55
    invite3329a62b

    Re : multiwii

    Oui mais la 4d c'est compliqué de se la représenter . Surtout que ce que j'obtiens avec processing n'a pas l'ai d’être 4d.

    rien qu'en utilisant un point par exemple

    http://la-dimension4.com/Repr%E9sent...imensions.html


    je ne vois pas le rapport avec la courbe sur processing

  26. #56
    inviteda892854

    Re : multiwii

    La 4D ? C'est une blague ?

    Je ne sais rien sur ton contexte, ni sur le processing, ni rien du tout.

    par contre, je peux deviner 2-3 choses.

    La fonction line est une fonction qui dessine une ligne.
    Pour dessiner une ligne, tu as besoin de 2 point (le debut et la fin de ta ligne, typiquement).
    En gros, ta fonction line c'est plutot

    line (x1, y1, x2, y2)

    Donc on reste purement dans de la 2D.

    1, (height/2)

    Cela te permet de faire en sorte que le 1er point de ta ligne soit en x=1 et au milieu de ta fenêtre grace à y=height/2


    1, (height/2)-0 - roll/12

    x=1 te permet de mettre le deuxieme point fixé sur 1 en x, donc ta ligne ne sera que vertical (ou horizontal, a voir).
    (height/2)-0 - roll/12
    heigth/2 te permet de partir du centre, le -0, je vois pas a quoi il sert, et pour finir, roll est une variable.
    Et encore heureux que tu as la variable, parce que sinon qu'est-ce que tu verrais ?
    J'imagine que roll/12, c'est parce que la variable roll dépasse le cadre de la fenêtre.


    Ca te parle ?
    Que quelqu'un me corrige si je dis une connerie, ce ne sont que des supposition.

  27. #57
    invite1d577638

    Re : multiwii

    Citation Envoyé par SofEvans Voir le message
    Que quelqu'un me corrige si je dis une connerie, ce ne sont que des supposition.
    Rien à ajouter ! Tu as tout dit !

  28. #58
    inviteda892854

    Re : multiwii

    Par contre, a moins d'un fonctionnement "caché"/inhérent à ce que tu utilise, tu n'obtiendras pas des courbe, mais plutôt un diagramme en barre.

    Pour avoir une courbe (la encore, ce n'est que supposition), il te faudra garder en mémoire tout les relevé du roll, et à chaque mise à jour, tu redessine toute la fenêtre en décalant.

    Je peux faire un pseudo-code si tu ne vois pas (mais je te conseil d'abord de réussir à avoir des données).

  29. #59
    invite3329a62b

    Re : multiwii

    Merci pour la réponse mais


    la fonction line permet bien de tracer la courbe?

    car si on place le 1 er point (1, (height/2)) et le 2 ème point (1,x) avec x= variable
    Cela me gène que le 2 éme point a une coordonnées sur l'axe des abscisses 1 car elle devrais augmenté au cours tu temps ??

    et que veux dire width ?? car

    if (xPos >= width) {
    xPos = 0;
    background(0);
    } else {
    // increment the horizontal position:
    xPos++;
    }

    Et le xPos++ permet il juste de continuer le tracé??

  30. #60
    inviteda892854

    Re : multiwii

    Citation Envoyé par Khalil_ Voir le message
    la fonction line permet bien de tracer la courbe?
    Non, "line" est un mot anglais qui se traduit par "ligne" en français.
    Donc, à moins que le créateur de la fonction soit vicieux, retors, psychopathe à tendances schizophrénique, il est fort probable que la fonction "line" se charge de tracer une ligne.
    Et comment on fait pour obtenir une courbe ? On fait plein de ligne.

    Citation Envoyé par Khalil_ Voir le message
    car si on place le 1 er point (1, (height/2)) et le 2 ème point (1,x) avec x= variable
    Cela me gène que le 2 éme point a une coordonnées sur l'axe des abscisses 1 car elle devrais augmenté au cours tu temps ??

    Non, et je vais me répéter :

    Citation Envoyé par SofEvans Voir le message
    Par contre, a moins d'un fonctionnement "caché"/inhérent à ce que tu utilise, tu n'obtiendras pas des courbe, mais plutôt un diagramme en barre.

    Pour avoir une courbe (la encore, ce n'est que supposition), il te faudra garder en mémoire tout les relevé du roll, et à chaque mise à jour, tu redessine toute la fenêtre en décalant.

    Citation Envoyé par Khalil_ Voir le message
    et que veux dire width ?? car

    if (xPos >= width) {
    xPos = 0;
    background(0);
    } else {
    // increment the horizontal position:
    xPos++;
    }

    Et le xPos++ permet il juste de continuer le tracé??
    Je ne comprends pas ce bout de code car je ne connais pas le contexte.
    mais je te suggère d'utiliser un traducteur en ligne "anglais <-> français".

    width = largeur

    Je suis donc prêts à parier que c'est la largeur de la fenêtre (un peu comme height).

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