nunchuck+lcd+arduino - Page 6
Répondre à la discussion
Page 6 sur 7 PremièrePremière 6 DernièreDernière
Affichage des résultats 151 à 180 sur 186

nunchuck+lcd+arduino



  1. #151
    Yoruk

    Re : nunchuck+lcd+arduino


    ------

    Citation Envoyé par pseudok Voir le message
    Tente de trouver du électrochimique, sinon oui prends celui-ci (attention, polarisé !!)

    -----
    La robotique, c'est fantastique !

  2. #152
    pseudok

    Re : nunchuck+lcd+arduino

    bonjours,


    J'ai du mal à extraire les donnés d'accéleromètre en vue de les afficher sur une courbe .
    J'ai regardé le code utilisé dans le site arduino pour faire bouger un carré dans processing
    http://playground.arduino.cc/Main/WiiChuckClass (tout à la fin de la page )

    lorsque j'utilise le code , il marche et le carré s'affiche dans une page mais je ne parvient pas à le bouger à l'aide de la télecommande ??

    Lorsqu'on utilise processing .il ne faut pas ouvrir arduino avec ??

  3. #153
    pseudok

    Re : nunchuck+lcd+arduino

    En faite j'essaye non plus de faire bouger un servo avec l'accéléromètre 3 AXES mais j'essaye d'utiliser le joystick mais je n'arrive pas .
    voici ce que j'ajoute au code .le code lorsque je l' ajoute est bon mais lorsque je bouge le joystik rien ne marche .
    bizare car ca marche pas , meme lorque j'utilise une autre manette . De plus les valeurs du joystick varient lorsque je bouge le joystck


    if (counter = 5)
    {
    // on extrait les données
    // dans mon exemple j’utilise uniquement les données d’accélération sur l’axe Y
    double joyX = ((data[0] && 2) - ZEROX);
    double joyY = ((data[1] && 2) - ZEROY);

    // on limite la valeur entre -180 et 180
    int value = constrain(joyY, -180, 180);

    // on mappe cette valeur pour le servomoteur soit entre 0 et 180

    value = map(value, -180, 180, 0, 180);

    // on écrit sur le servomoteur la valeur
    servomoteur.write(value);


    }

  4. #154
    Yoruk

    Re : nunchuck+lcd+arduino

    On avance pas, malgré ce que je me tanne à te répéter...

    Déjà, pourquoi repartir sur une nouvelle version de code ? La première était une bonne base... Si, dès qu'il y a un problème, tu pars en quête d'un autre code en espérant qu'il marche, tu ne vas pas y arriver ! Il faut réfléchir, et ne pas se contenter de dire, "ça marche pas, je vais regarder un truc complètement différent."

    Dans ton code arduino message précédent, il n'y a RIEN qui envoie des données sur le port série. Pas étonnant que ça ne fonctionne pas ! Je ne comprends pas que tu n'ai toujours pas saisi comment fonctionne le couple arduino + processing !!

    Pour le PREMIER code, poste le code arduino ET processing. Je ne peux rien analyser sinon...

    Lorsqu'on utilise processing .il ne faut pas ouvrir arduino avec ??
    A éviter !

    Bref, prends une version de code, et travaille uniquement sur celle là. Analyse le code, étudie les instructions utilisées, et voit comment le faire marcher. Et les remarques du genre "ça marche pas" ne font rien avancer du tout. Et ce genre de remarques :

    quelle est l'utilité de rajouter ça textFont(font, 11);
    Prouve que tu ne t'es pas donné la peine de lire le manuel...
    La robotique, c'est fantastique !

  5. #155
    pseudok

    Re : nunchuck+lcd+arduino

    Il est vrai que j'ai tendance à aller dans tout les sens .
    Mais j'essaye de te poser plusieurs question pour avancer le plus possible et étant donné qu'on ne peux pas echanger
    en direct .

    En effet le code marché , mais je veux faire marcher 6 servo dans le but de faire marcher un bras robotisé . 2 servo parallax avec les informations des accéléromètres et 2 micro servo à l'aide des informations du joystik (axe X et Y) et 2 micro servo pour faire bouger une pince à l'aide des bouton C et Z
    D'ou pourquoi j'essaye d'utiliser le joystik mais celui-ci ne veux pas fonctionner ?

    Les axes du joysticks sont dans les octets 1 et 2 donc j'essaye de faire in truc comme ca met.
    Met , c'est que je ne suis pas à laisse avec les histoire d'octet je dois mettre le numéros d'ctet ou de bits entre les []
    data[0]

    il est clair que je n'est pas compris l’intérêt du port série . Éclair moi si tu le veux bien
    car pour moi le port serie permet je de faire défiler sur l'écran les donnés d'accé , de joystik et c et d
    et pour les obtenir on utilise Serial.print() et non lcd.print()
    Pour moi , les lignes Sérial.print() ne sont pas indispensable


    Que veux tu dire en disant que
    il n'y a RIEN qui envoie des données sur le port série
    tu parles bien du code arduino et non de processing

    C'est bizare que le code ardui marche pour l'acce et non pour le joystik etant donné que j'ai juste changé la partie accéleratio par celle joystick


    voici le code cube open source

    http://playground.arduino.cc/Main/Wi...rceblock&num=6

  6. #156
    Yoruk

    Re : nunchuck+lcd+arduino

    En effet le code marché ,
    Lequel ?

    mais je veux faire marcher 6 servo dans le but de faire marcher un bras robotisé . 2 servo parallax avec les informations des accéléromètres
    Aie... Comment tu veux fixer une position angulaire d'un servo avec une accélération ? Tu n'aurais pas oublié une intégration quelque part ? Disons que fixer la position angulaire à partir d"une info d'accélération est assez peu utile... J'ai peur que tu fasses fausse route...? (L'accélération est la dérivée en fonction du temps de la vitesse, tu le sais ça ?)


    et 2 micro servo à l'aide des informations du joystik (axe X et Y) et 2 micro servo pour faire bouger une pince à l'aide des bouton C et Z
    D'ou pourquoi j'essaye d'utiliser le joystik mais celui-ci ne veux pas fonctionner ?
    Chaque chose en son temps... Faudrait aussi que tu me reprécises la différence entre les différents éléments de la manette, la wii c'est pas ma spécialité !!

    Les axes du joysticks sont dans les octets 1 et 2 donc j'essaye de faire in truc comme ca met.
    ???

    Met , c'est que je ne suis pas à laisse avec les histoire d'octet je dois mettre le numéros d'ctet ou de bits entre les []
    data[0]
    ???? C'est nouveau ces histoires d'octet ? C'est quoi pour toi un octet ? J'ai peur pour la suite !!

    il est clair que je n'est pas compris l’intérêt du port série . Éclair moi si tu le veux bien car pour moi le port serie permet je de faire défiler sur l'écran les donnés d'accé , de joystik et c et d
    et pour les obtenir on utilise Serial.print() et non lcd.print()
    C'est bien ça... Mais, pour tracer des courbes, il faut que la arduino envoie des données au pc. Et ce transfert s'effectue via cette même liaison. Tu envoies les données de la même façon, (avec serial.print) mais sans mettre d'écran, car là c'est le pc qui va exploiter les données. Cette exploitation va être réalisée par le code processing qui va récupérer ces données et effectuer le tracé.


    Pour moi , les lignes Sérial.print() ne sont pas indispensable
    Hé bin si... Sans ces lignes, le PC ne reçoit rien !

    C'est bizare que le code ardui marche pour l'acce et non pour le joystik etant donné que j'ai juste changé la partie accéleratio par celle joystick
    Oui peut être, mais si tu n'envoies pas de données...
    La robotique, c'est fantastique !

  7. #157
    pseudok

    Re : nunchuck+lcd+arduino

    En effet le code marché ,
    Lequel ?
    les 2 codes ( le code arduino fessant bouger juste les joystiks et le code processing ce qui n'est pas étonnant vu qu'il est opensource)
    le code arduino est validé mais les joystick ne bougent pas et le code processing n'as pas d'erreurs mais le carrée s'affiche mais je ne peux pas le bouger à l'aide des accéleromètres soit en bougeant la manette!
    (si tu veux on peut oublier processing pour le moment et se consacrer sur les autres points)

    Comment tu veux fixer une position angulaire d'un servo avec une accélération
    j'avoue que là je n'ai pas compris ? déjà la position angulaire varie si le servo tourne et s'est ce que j'obtient .
    Pourquoi devrais-je fixer une position angulaire d'un servo avec une accélération.

    (L'accélération est la dérivée en fonction du temps de la vitesse, tu le sais ça ?)
    Tu tout à fait raison de soulever ce problème car il faut bien que je comprenne cela avant de passer à la suite

    veux tu dire que je n'obtient pas la position car il n'y à pas de calcul permettant de passer d'une accéleration en une position??
    l'accéleromètre ADXL 330 de la wii donne l'accélération de l'objet suivant 3 axes et il faut dériver 2 fois pour obtenir la position de cette objet ( quand tu parles de position il s'agit biend eposition angulaire des servos)
    Mais je ne sais plus quoi dire . Que dois je integrer et comment ?? car pour moi l'accéléromètre permet de faire tourner les servos donc j'en ai déduis que j'obtient à partir des donnés brutes d'accéleration , une position angulaire car les servo tourne .
    Peut tu m'expliquer pourquoi ce n'est pas le cas et comment le faire?
    car d'àprès cette video https://www.youtube.com/watch?v=iXCkfVol3oo
    on à bien une position ,et le système peux se rapprocher d'un bras motorisé (avec des servos)

    tu me reprécises la différence entre les différents éléments de la manette
    nunchuck=
    un accéléromètre à 3 axes(xyz)
    une croix analogique à 2 axes(xy)=joystick
    utilise la communication I2C

    C'est quoi pour toi un octet ? J'ai peur pour la suite !!
    les informations numériques de na nunchuck sont codé sous la forme de 0 et 1 .Chacun de ces chiffre étant 1 bit et un octet s'est 8 bits
    La nunchuck envoit 6 octets ( des infos étant ds ces octets)

    Octet 1 :

    Position du joystick sur l’axe x

    Octet 2 :

    Position du joystick sur l’axe y

    Octet 3 :

    Accélération sur l’axe x bit 9 à 2

    Octet 4 :

    Accélération sur l’axe y bit 9 à 2

    Octet 5 :

    Accélération sur l’axe z bit 9 à 2

    Octet 6 :

    Accélération sur l’axe z bit 1 et 0
    Accélération sur l’axe y bit 1 et 0
    Accélération sur l’axe x bit 1 et 0
    infos bouton C
    infosboutonD
    avec ca on demande un tableau de donnée de 6 octet ?? uint8_t data[6]

    donc entre les [] ,il s'agit bien du nbre octet ??

    on demande 6 octets au nunchuck
    Wire.requestFrom(WII_NUNCHUK_I 2C_ADDRESS, 6)

    mais après ce que j'utilise est en contraduictionavec mon code car observe le sumero dans le data[] cela ne correspond pas au octet évoqué
    [B]Peut tu m'expliquer comment coder avec les octets ?? [/B.

    C'est nouveau ces histoires d'octet ?
    ] le sujet repose sur ça car on fait extrait les infos accél, joystik , bouton à l'aides des octets ou bites (je t'avoue que je n'ai pas bien compris)en tout cas ,Cela ne sert à rien de passer à la suite sans comprendre cela.

    Tu envoies les données de la même façon, (avec serial.print) mais sans mettre d'écran
    sans mettre d'écran?? c'est quoi ça

    Est-ce qu'il manque juste des Serial.print() pour que losque je bouge la manette le carrée bouge ??
    car dans le code carrée il n'y à aucun Serial.print()


    C'est bizare que le code ardui marche pour l'acce et non pour le joystik etant donné que j'ai juste changé la partie accéleratio par celle joystick
    Oui peut être, mais si tu n'envoies pas de données...
    Comment envoyer ces données car en faite j'ai pris le code avec les accélérations et j'ai modifié avec juste la partie envoyé des donnée de l'accéleration par celle du joystik (utilisation d'octet différents)?? Il y a les Serial.print()

    PS : il vaudrais mieux mettre au clair les histoire d'octet , de position angulaire et le joystique qui ne marche pas avant de passer à la suite
    si tu veux ,on peut oublier processing pour le moment !
    Dernière modification par pseudok ; 19/11/2014 à 15h26.

  8. #158
    pseudok

    Re : nunchuck+lcd+arduino

    pour le joystique j'ai dans le code

    lcd.print(chuck.readJoyY());

    donc j'ai essayé de faire
    lcd.print((int)chuck.readJoyY( ));

    mais rien à faire .

    voici un bras fonctionnant à l'aide d'une nunchuck
    https://www.youtube.com/watch?v=uzj0HpxRW4s
    Dernière modification par pseudok ; 19/11/2014 à 15h45.

  9. #159
    Yoruk

    Re : nunchuck+lcd+arduino

    les 2 codes ( le code arduino fessant bouger juste les joystiks et le code processing ce qui n'est pas étonnant vu qu'il est opensource)
    le code arduino est validé
    C'est pas parce que le code arduino compile qu'il envoie correctement les valeurs. Il faut faire marcher le couple arduino + processing, tu ne peux rien faire l'un sans l'autre.

    mais les joystick ne bougent pas et le code processing n'as pas d'erreurs mais le carrée s'affiche mais je ne peux pas le bouger à l'aide des accéleromètres soit en bougeant la manette!
    C'est que soit l'arduino envoie rien/des données erronées soit que le code processing déconne... Poste les DEUX codes. Et c'est QUOI cette histoire de carré ? Tu veux plus tracer de courbes ?

    Pourquoi devrais-je fixer une position angulaire d'un servo avec une accélération.
    C'est bien la question que je te pose ! Si toi même tu ne sais pas...

    veux tu dire que je n'obtient pas la position car il n'y à pas de calcul permettant de passer d'une accéleration en une position??
    Oui ! Ca ne sert à rien (pour moi) de faire qu'un angle soit égal à une accélération...

    l'accéleromètre ADXL 330 de la wii donne l'accélération de l'objet suivant 3 axes et il faut dériver 2 fois pour obtenir la position de cette objet
    INTEGRER !!

    Mais je ne sais plus quoi dire . Que dois je integrer et comment ?? car pour moi l'accéléromètre permet de faire tourner les servos donc j'en ai déduis que j'obtient à partir des donnés brutes d'accéleration , une position angulaire car les servo tourne .
    Le servo est "bête"... Il fait ce que tu lui dit de faire... Tu pourrais très bien le faire tourner en fonction de l'humidité ambiante de la pièce, que ça serait pareil. Une accélération lue par ce genre de capteurs est pas lisse du tout (tu as bien vu sur tes premiers résultats). Lui, il y va bêtement !!

    Peut tu m'expliquer pourquoi ce n'est pas le cas et comment le faire?
    Il faut intégrer 2 fois pour revenir sur une position...

    les informations numériques de na nunchuck sont codé sous la forme de 0 et 1 .Chacun de ces chiffre étant 1 bit et un octet s'est 8 bits
    La nunchuck envoit 6 octets ( des infos étant ds ces octets)
    Tu comprends ce que signifie tout ça ou pas ?


    sans mettre d'écran?? c'est quoi ça
    Laisse tomber, je me suis embrouillé...

    Est-ce qu'il manque juste des Serial.print() pour que losque je bouge la manette le carrée bouge ??
    Possible...

    car dans le code carrée il n'y à aucun Serial.print()
    Quel code ? Processing (normal qu'il n'y en ai pas) ou arduino (normalement indispensable) ?


    Comment envoyer ces données car en faite j'ai pris le code avec les accélérations et j'ai modifié avec juste la partie envoyé des donnée de l'accéleration par celle du joystik (utilisation d'octet différents)?? Il y a les Serial.print()

    PS : il vaudrais mieux mettre au clair les histoire d'octet , de position angulaire et le joystique qui ne marche pas avant de passer à la suite

    Pourquoi d'un coup tu t'embêtes avec les octets ? C'est la librairie qui fait tout ça ! A à priori, ça fonctionne...

    PS : Va falloir penser à faire un livre avec nos échanges passionnants
    La robotique, c'est fantastique !

  10. #160
    pseudok

    Re : nunchuck+lcd+arduino

    voici le code pour le jotystick qui ne fonctionne pas

    #include <math.h>
    #include <Servo.h>;
    #include <Wire.h>;

    #include "Wire.h" // voir son utilité?
    #include "WiiChuck.h"
    #include "LiquidCrystal.h"

    #define MAXANGLE 90
    #define MINANGLE -90


    // Doit être ajusté en fonction de chaque nunchuck
    #define ZEROX 530
    #define ZEROY 530
    #define ZEROZ 530

    // adresse I2C du nunchuck
    #define WII_NUNCHUK_I2C_ADDRESS 0x52

    // définition d'une variable Servo (Creer un objet servo pour controler un servo)
    Servo servomoteur;


    // définition d'une variable counter
    int counter;

    WiiChuck chuck = WiiChuck();
    int angleStart, currentAngle;
    int tillerStart = 0;
    double angle;


    // définition d'un tableau de données
    uint8_t data[6];





    void setup() {
    //nunchuck_init();

    lcd.begin(16, 2);

    // on attache le servomoteur à la pin 11 (PWM)
    servomoteur.attach(13);

    Serial.begin(115200);
    chuck.begin();
    chuck.update();
    //chuck.calibrateJoy();


    // initialisation du nunchuck
    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(){

    // on demande 6 octets au nunchuck
    Wire.requestFrom(WII_NUNCHUK_I 2C_ADDRESS, 6);

    counter = 0;

    // tant qu'il y a des données
    while(Wire.available())
    {
    // on récupère les données
    data[counter++] = Wire.read();
    }

    // on réinitialise le nunchuck pour la prochaine demande
    Wire.beginTransmission(WII_NUN CHUK_I2C_ADDRESS);
    Wire.write(0x00);
    Wire.endTransmission();


    if (counter = 5)
    {
    // on extrait les données
    // dans mon exemple j’utilise uniquement les données d’accélération sur l’axe Y
    double joyX = ((data[0] && 2) - ZEROX);
    double joyY = ((data[1] && 2) - ZEROY);

    // on limite la valeur entre -180 et 180
    int value = constrain(joyY, -180, 180);

    // on mappe cette valeur pour le servomoteur soit entre 0 et 180

    value = map(value, -180, 180, 0, 180);

    // on écrit sur le servomoteur la valeur
    servomoteur.write(value);


    }
    //nunchuk.update();

    // ce q j'ai enlevé

    //nunchuk.update();

    chuck.update(); // (voir si on peut creer une parenthese et la fermer avant celle finale)

    lcd.setCursor(0, 0);
    lcd.print(chuck.readJoyX());
    lcd.print(' ');
    lcd.print(chuck.readJoyY());
    lcd.print(' ');
    lcd.print(chuck.cPressed()?"c1 ":"c0");
    lcd.print(' ');
    lcd.print(chuck.zPressed()?"z1 ":"z0");
    lcd.print(' ');
    lcd.setCursor(0, 1);
    lcd.print((int)chuck.readAccel X());
    lcd.print(' ');
    lcd.print((int)chuck.readAccel Y());
    lcd.print(' ');
    lcd.print((int)chuck.readAccel Z());
    lcd.print(' ');
    lcd.print((int)chuck.readJoyY( ));
    lcd.print(' ');
    // un petit delai pour pas saturer le servomoteur (attend quelques ms pr q le servo etteigne la position)
    delay(100);
    lcd.clear();
    }






    je ne vis vraiment pas pourquoi ca ne marche pas

  11. #161
    Yoruk

    Re : nunchuck+lcd+arduino

    Tu as des problèmes avec la langue française ou tu ne t'es pas donné la peine de me lire ? J'ai déjà dit (plusieurs fois) que :

    -poster un seul code sur les 2 est inutile;
    -il faut des serial.print pour envoyer les données dans le code arduino.
    La robotique, c'est fantastique !

  12. #162
    pseudok

    Re : nunchuck+lcd+arduino

    voila le code je te l'ai envoyé en message privé

    [/QUOTE]
    a mon avis le soucis se situe là car je ne comprends pourquoi ce serait d'utiliser lcd.print() à la place de Serial.print qui serait à l'origine du problème car le code avec les accélerations à des lcd.print() mais il marche?

    et la librairie wiichuck car je crois que le souci est ici au niveau de la transmition
    je crois qu'il y à un & en trop n'est ce pas et
    je crois qu'il faut que j'utilise joyX = ((data[0] && 2) - ZEROX); à la place de double joyX = ((data[0] & 2) - ZEROX);
    Je pense que le double permet d’intégrer 2 fois les données d'accélération , et dans ce cas il n'est pas utile

    mais j'obtient ces erreurs en modifiant

    varie_fina4.ino: In function 'void loop()':
    varie_fina4:96: error: 'joyX' was not declared in this scope
    varie_fina4:97: error: 'joyY' was not declared in this scope
    autre possibilité . se conformer à la librairie wiichuck et balancer
    JoyX = (data[0]) ;
    JoyY = (data[1]) ;


    il faut des serial.print pour envoyer les données dans le code arduino.
    Comment expliques tu que le code avec les acceleration que je t'es envoyé en message privé marche avec des lcd.print() et le code avec les joystik ne marcherais pas avec des lcd.print() mais des Serial.print() .
    Comment ce fait il que je code alors avec les accé marche??
    Dernière modification par pseudok ; 20/11/2014 à 12h12.

  13. #163
    Yoruk

    Re : nunchuck+lcd+arduino

    Si tu veux de l'aide, inutile de me passer les codes en MP. C'est ici, ou nulle part.
    La robotique, c'est fantastique !

  14. #164
    pseudok

    Re : nunchuck+lcd+arduino

    ok d'accord

    peut tu répondre s'il te plait à mes questions car je ne comprend pas pourquoi le lcd.print() serait à l'origine du fais que le joystik ne fonctionne pas ?

  15. #165
    Yoruk

    Re : nunchuck+lcd+arduino

    Sans code...
    A priori il n'y a aucun rapport entre les 2.

    Après j'ai du mal à te suivre, tu mélanges (encore...) 36 sujets : cette nouveauté avec le joystick dont on a pas entendu parler, ton histoire d'octet, ton histoire d'intégration, tes problèmes d'affichage de courbe... Soit tu précises, avec les codes entiers associés, soit je laisse tomber.

    Je pense que le double permet d’intégrer 2 fois les données d'accélération , et dans ce cas il n'est pas utile
    Quand je vois des horreurs comme ça, j'ai vraiment envie de te dire de laisser tomber complètement le projet...

    Tu penses vraiment pouvoir être crédible face à un prof ? Si tu cherches à les impressionner avec un projet complexe, c'est raté. Tu va te faire allumer à la première question !!
    La robotique, c'est fantastique !

  16. #166
    pseudok

    Re : nunchuck+lcd+arduino

    ok

    le double est comme le float soit il permet d'exprimer une variable mais de manière plus précise donc
    double joyX = ((data[0] & 2) - ZEROX); et joyX = ((data[0] & 2) - ZEROX); c'est la meme chose mais l'ajout du double permet d'avoir une précision plus importante?


    J’essaye de code en utilisant précisément les termes de la librairie WiiChuck .ICI j'essaye de voir comment coder juste le joystick de la nunchuck en utilisant juste la librairie Wiichuck
    Voilà selon moi ce que je dois mettre dans mon code . Je vais introduire ce code dans l'original et voir ce qu'il se passe !

    #define DEFAULT_ZERO_JOY_X 124
    #define DEFAULT_ZERO_JOY_Y 132



    zeroJoyX = DEFAULT_ZERO_JOY_X;
    zeroJoyY = DEFAULT_ZERO_JOY_Y;

    void setup() {
    //il ya des informations bien sur à rajouter
    }

    void loop(){


    if (counter > 5){

    joyX = ((status[0] & 2)-zeroJoyX)
    joyY = ((status[1] & 2)-zeroJoyY)

    int value = constrain(joyX, -180, 180);
    int value = constrain(joyY, -180, 180);

    value = map(value, -180, 180, 0, 180);


    Serial.print(chuck.readJoyX()) ;
    Serial.print(' ');
    Serial.print(chuck.readJoyY()) ;
    Serial.print(' ');

    }

    delay(100)
    }
    Voici la librairie Wichuck que j'utilise . Merci de m'informer d'une possible mauvaise démarche de ma part. Tu me dis qu'il faut partir de la librairie pour coder et c'est ce que j'essaye de faire


    #ifndef WiiChuck_h
    #define WiiChuck_h

    #include "WProgram.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:
    byte cnt;
    uint8_t status[6]; // array to store wiichuck output
    byte 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];

    boolean lastZ, lastC;


    public:

    byte joyX;
    byte joyY;
    boolean buttonZ;
    boolean 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.send(0xF0);
    Wire.send(0x55);
    Wire.endTransmission();
    delay(1);
    Wire.beginTransmission(0x52);
    Wire.send(0xFB);
    Wire.send(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.receive()); //
    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;
    }

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

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

    // for using the joystick like a directional button
    boolean 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:
    byte _nunchuk_decode_byte (byte 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.send (0x00); // sends one byte
    Wire.endTransmission (); // stop transmitting
    }

    };


    #endif
    Dernière modification par pseudok ; 20/11/2014 à 15h55.

  17. #167
    Yoruk

    Re : nunchuck+lcd+arduino

    le double est comme le float soit il permet d'exprimer une variable mais de manière plus précise donc
    double joyX = ((data[0] & 2) - ZEROX); et joyX = ((data[0] & 2) - ZEROX); c'est la meme chose mais l'ajout du double permet d'avoir une précision plus importante?
    En gros oui, mais dans ton cas un float peut à priori suffire...

    http://arduino.cc/en/Reference/Float
    http://arduino.cc/en/Reference/Double

    J’essaye de code en utilisant précisément les termes de la librairie WiiChuck .ICI j'essaye de voir comment coder juste le joystick de la nunchuck en utilisant juste la librairie Wire
    J'utilise cela .Voilà selon moi ce que je dois mettre dans mon code . Je vais introduire ce code dans l'original et voir ce qu'il se passe !
    Si tu testes un truc nouveau (le joystick) tu peux aussi si ça peut te simplifier la vie faire le test du joystick uniquement dans un petit programme, à part. Si l'essai est concluant, tu balances dans ton "gros" code (ton code principal). Il est en effet plus facile en cas de problèmes de corriger un "petit" code plutôt qu'un gros.

    Voici la librairie Wichuck que j'utilise . Merci de m'informer d'une possible mauvaise démarche de ma part. Tu me dis qu'il faut partir de la librairie pour coder et c'est ce que j'essaye de faire
    Code lu en diagonale, tente effectivement, ça semble pas trop mal...
    La robotique, c'est fantastique !

  18. #168
    pseudok

    Re : nunchuck+lcd+arduino

    Voici le code qui marche .Bien sur marché est un très grand mot car je voulais obtenir les 2axes mais je ne peux faire tourner le servo juste avec l'axe X du joystik . Comment ce fait -il que les 2 axes ne fonctionnent pas en meme temps .
    mais j'ai été confronté à de nombreux soucis que je ne comprend pas

    deja le code ne marche pas si je ne rajoute pas le double avant le joyX = ((data[0]));
    l'erreur qu'il me donne c'est joyX was not declared in this scope si je n'utilise pas le double
    peut tu m'expliquer pourquoi ?car je penser que se n'était pas indispensable
    j'ai essayé le floatque tu m'a dis et sa marche ?


    De plus, j'ai fais comme avec les accé et mis les valeurs du joystiq de début pour améliorer comme cela
    #define DEFAULT_ZERO_JOY_X 124
    #define DEFAULT_ZERO_JOY_Y 132
    ....

    double joyX = ((data[0] & 2)-DEFAULT_ZERO_JOY_X );
    double joyY = ((data[1] & 2)-DEFAULT_ZERO_JOY_Y );

    mais avec cela quand je téleverse le code déja un truc bizarre le servo ne bouge meme pas ce qui est le cas avec les autres codes et je vois par la suite que le joystik ne fais rien bougé donc je vais voir le moniteur série et là je vois que les valeurs du joystique ne varie pas l'orque je bouge le joystik
    Peut tu m'aider à rajouter ce DEFAULT_ZERO_JOY_X et Y

    par contre le joystik de l'axe X fait tourner le servo . Mais celui de l'axe Y ne fait rien bouger?


    #include <math.h>
    #include <Servo.h>;
    #include <Wire.h>;

    #include "Wire.h"
    #include "WiiChuck.h"



    #define WII_NUNCHUK_I2C_ADDRESS 0x52

    Servo servomoteur;

    int counter;

    WiiChuck chuck = WiiChuck();
    int angleStart, currentAngle;
    int tillerStart = 0;
    double angle;

    uint8_t data[6];





    void setup() {

    servomoteur.attach(13);

    Serial.begin(9600);
    chuck.begin();
    chuck.update();

    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){

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

    int valueX = constrain(joyX, -180, 180);
    int valueY = constrain(joyY, -180, 180);

    valueX = map(valueX, -180, 180, 0, 180);
    valueY = map(valueY, -180, 180, 0, 180);
    servomoteur.write(valueX);
    servomoteur.write(valueY);
    }

    chuck.update();

    Serial.print(chuck.readJoyX()) ;
    Serial.print(' ');
    Serial.print(chuck.readJoyY()) ;
    Serial.print(' ');

    delay(100);
    }

    Autre chose le servo semble bouger juste de 45 degrès ce qui est très faible comment corriger cela car dans le code j'ai mis -180 à 180

    PS: pouvons nous changer de post il commence par y avoir beaucoup de pages
    Dernière modification par pseudok ; 20/11/2014 à 18h59.

  19. #169
    pseudok

    Re : nunchuck+lcd+arduino

    Voila , j'aimerais également que l'on parle de ses lignes .Je m'excuse d'avance car on risque de parler de bits

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

    Bon le double ou float est indispenssable ce que je n'ai pas compris donc comprends maintenant pourquoi il m'a fallut du temps avant de comprendre mon erreur (celle la : j'avais oublié le int ici dans les instruction avant le setup)

    #define DEFAULT_ZERO_JOY_X -4
    #define DEFAULT_ZERO_JOY_Y -4

    int zeroJoyX = DEFAULT_ZERO_JOY_X;
    int zeroJoyY = DEFAULT_ZERO_JOY_Y;

    c'est pas pour autant que j'arrive à utiliser le zeroJoyX dans cette ligne joyX = ((data[0] && 2) - ZEROX); car je ne parvient toujours pas à le faire

    Voilà , ça je comprend double joyX = ((data[0]) && 2) - ZEROX); soit j'extrait les données du joystick suivant l'axe X et j'enlève la valeur initiale pour partir de ZERO mais ça je ne comprend pas à quoi sert le & ( tu as du le comprendre car je t'ai dis qu'il y avait une erreur car il y en avait 2 qui se suivaient mais en faite je n'avais pas compris ) .je sais que s'est un opérateur binaire mais à quoi sert il dans ce cas là pourquoi il y à un 2 juste après pour le joystick et un 0x03 pour l'accélération .
    accelX = ((data[2] << 2) + ((data[5] >> 2) & 0x03) - ZEROX);


    Maintenant , ayant utilisé la joystick je comprend pourquoi tu parle de position fixe du servo . Et si tu avais queleques remarques là dessus je suis prenant . Comment y parvenir ?

  20. #170
    Yoruk

    Re : nunchuck+lcd+arduino

    Citation Envoyé par pseudok Voir le message
    deja le code ne marche pas si je ne rajoute pas le double avant le joyX = ((data[0]));
    l'erreur qu'il me donne c'est joyX was not declared in this scope si je n'utilise pas le double
    peut tu m'expliquer pourquoi ?car je penser que se n'était pas indispensable
    j'ai essayé le floatque tu m'a dis et sa marche ?
    Tu déclares une variable de type X, et ensuite tu restes avec le même type. Mélanger float/double est casse-gu***. Fait comme le code est prévu.

    Citation Envoyé par pseudok Voir le message
    De plus, j'ai fais comme avec les accé et mis les valeurs du joystiq de début pour améliorer comme cela
    #define DEFAULT_ZERO_JOY_X 124
    #define DEFAULT_ZERO_JOY_Y 132
    ....

    double joyX = ((data[0] & 2)-DEFAULT_ZERO_JOY_X );
    double joyY = ((data[1] & 2)-DEFAULT_ZERO_JOY_Y );

    mais avec cela quand je téleverse le code déja un truc bizarre le servo ne bouge meme pas ce qui est le cas avec les autres codes et je vois par la suite que le joystik ne fais rien bougé donc je vais voir le moniteur série et là je vois que les valeurs du joystique ne varie pas l'orque je bouge le joystik
    Peut tu m'aider à rajouter ce DEFAULT_ZERO_JOY_X et Y

    par contre le joystik de l'axe X fait tourner le servo . Mais celui de l'axe Y ne fait rien bouger?
    Je ne comprends toujours pas... Ton servo, il tourne avec le joystick OU avec tes fameux relevés d’accélération (qui, on l'a vu, ne peuvent pas marcher en l'état).
    Pour le joystick, il faut voir aussi quel type d'infos il renvoie : du digital (détection d'un coup de flèche à droite ou à gauche) ou de l'analogique (genre une position angulaire). Selon le type d'infos, le pilotage sera complètement différent !

    Prends 10 minutes pour rédiger un cahier des charges complet de ton truc en expliquant de A à Z ce à quoi sert le tout, et comment il fonctionne.

    Citation Envoyé par pseudok Voir le message
    PS: pouvons nous changer de post il commence par y avoir beaucoup de pages
    NAN. S'il y a beaucoup de pages, c'est que ton sujet n'est pas clair / qu'il te manque des compétences / que je suis bien sympa de t'aider malgré le peu d'entrain que tu sembles mettre pour avancer correctement. Ouvrir un énième sujet ne fera que rendre le tout encore plus incompréhensible.
    La robotique, c'est fantastique !

  21. #171
    pseudok

    Re : nunchuck+lcd+arduino

    Je ne comprends toujours pas... Ton servo, il tourne avec le joystick OU avec tes fameux relevés d’accélération
    Le servo peut fonctionner soit avec les données d'accé ,des 2 axes en crois du joystik (ou avec les boutons c et z .A voir par la suite )
    Mon but c'est de faire bouger 6 servo (2 avec les accé X et Y , 2 avec les joyX et Y et 2 por un pince avec les bouton c et z
    Donc j'ai déja utilisé les accé et maintenant j'essaye d'utiliser les données des joy sur les axes X et Y

    tes fameux relevés d’accélération (qui, on l'a vu, ne peuvent pas marcher en l'état)
    S'il te plait , explique moi pourquoi .
    Est-ce du au 2 integrations ?? .Il est vrai , que j'au vu que pour faire une centrale inertielle , certaines personnes utilisées le mème
    acceleromètre que celui de la nunchuck (ADXL 330 ) et qu'ils ajoutés une carte pour récupérer les données et faire les calculs sur un ordi.
    Je suis plus quoi penser .Certains site parlent d' accéléromètre intégré de la Nunchuck ( je ne sais pas si il est déja intégré ou pas )
    et le site internet d'une université anglais dis (tu m'excusera de ne pas avoir fait la traduction car j'ai l'impression que lorque j'essaye de la traduire je modifie le sens


    use the acceleration information to estimate the position of
    the accelerometer in the 2D space (table). As discussed in lecture, a double
    integration may be a first approximation, but may have some issues. Please
    incorporate such double integration into the XY calibration VI above. For your
    reference, the VI Calibrate and Plot location XY Accelerometer
    (Shell).vi has some of the user interface components that you can use to
    visualize the position and to reset the integrators. (For the integration step use the
    point-by-point VI provided in the Signal Processing palette.)
    donc il semblerais qu'il faut incorporer une integration mais comment ??


    Pour le joystick, il faut voir aussi quel type d'infos il renvoie
    voilà ce qui donnent dans les sites de vente, un stick analogique
    Ceux ci était prévisible car lorque je parlais d'octet je t'ais dis que les informations numériques(donc analogique) de na nunchuck sont codé sous la forme de 0 et 1 [/I]

    Voila les problème que je rencontre .Lorsque j'utilise un joystik sur un axes par exemple X(le code marche mais de manière pas efficace du tout) ,lorque je tourne le joystik à droite le servo tourne de presque 45degrès mais lorsque je tourne le joystiq à gauche le servo toune mais avec une rotation très faible (environ10 degrès ) ce qui est pas normal . Que puis-je faire ?

    j'ai utilisé sa pour être plus précis mais la rotation est plus faible .

    servomoteur.write(90+joyX/2);
    // on divise par 2 la valeur reçue pour moins d'amplitude et plus de précision

    je voulais une amplitude plus grande et avec de la précision donc je vois pas comment faire !



    rédiger un cahier des charges complet de ton truc
    Faire bouger un bras ( bras un très grand mot disons plutot 6 servos
    2 avec les accé X et Y , 2 avec les joyX et Y et( 2 pour un pince avec les bouton c et z , a voir par la suite)
    et je souhaite afficher les valeurs prises avec une lcd (déja fait)
    Dernière modification par pseudok ; 21/11/2014 à 12h13.

  22. #172
    Yoruk

    Re : nunchuck+lcd+arduino

    S'il te plait , explique moi pourquoi .
    Est-ce du au 2 integrations ?? .
    Exact.

    Certains site parlent d' accéléromètre intégré de la Nunchuck ( je ne sais pas si il est déja intégré ou pas )
    Les relevés d’accélération dont on parle depuis 3 semaines, ils viennent d'où à ton avis ?

    donc il semblerais qu'il faut incorporer une integration mais comment ??
    Sors tes cours de maths et de traitement du signal... Mais là ça va se corser !!


    Ceux ci était prévisible car lorque je parlais d'octet je t'ais dis que les informations numériques(donc analogique) de na nunchuck sont codé sous la forme de 0 et 1 [/I]
    Tu n'as visiblement rien compris.. Quelle est la différence, pour toi, entre un signal analogique et numérique ? Et la différence entre un joystick analogique et numérique ?

    je voulais une amplitude plus grande et avec de la précision donc je vois pas comment faire !
    Augmente l'amplitude avec un coef multiplateur...


    Faire bouger un bras ( bras un très grand mot disons plutot 6 servos
    2 avec les accé X et Y , 2 avec les joyX et Y et( 2 pour un pince avec les bouton c et z , a voir par la suite)
    et je souhaite afficher les valeurs prises avec une lcd (déja fait)
    Donc on oublie le tracé ?
    La robotique, c'est fantastique !

  23. #173
    pseudok

    Re : nunchuck+lcd+arduino

    Laisse tomber l'histoir du joystik et du code .
    Il faut faire cela avant et selon moi on devra faire appelle au filtre khalman énoncé précédemment

    Laisse tomber l'histoir du joystik et du code . Il faut faire cela avant et selon moi on devra faire appelle au filtre khalman énoncé précedement
    En effet , il y à un souci . Selon moi ,il faut filtrer les données provenant de l'accéleromètre dans le but d'obtenir la vitesse et la position dans l'espace
    Mais integrer comment ?(d'après mon cours ,je sais juste que le filtre passe bas à a un comortement integrateur et cela ne m'avance pas vraiment. Comment puis-je integrer selon toi
    directement sur le code arduino avec un algorithme ( de lignes de codes en plus ) ou filtrer électroniquement (soit faire un montage et rajouter des composants )
    Or ,le fait d'intégrer la vitesse et la position entraine de nombreuses erreurs
    L'idée serait de corriger dynamiquement les erreurs (notamment le jitter de l'accéléro) en implémentant un algo (celui ci devant etre selon moi dans arduino en important la librairie Khalman et en codant )qui reconnait les invariants dans le signal qui sont du bruit et ceux qui sont du déplacement sur les filtres de kalman
    J'ai déja vu certaines personnes utiliser le filtre kalman mais pour filtrer des mesures brutes (et piloter un servo de manière plus fluide sans vibration . Cette initiative etant similaire à celle de la moyenne glissante





    toutes les personnes que j'ai vu utilisant la nunchuck . Utilise seulement les données brutes et ne passe pas des données d'accé à de sdonnés
    de position et utilise un filtre kalman non pas pour corriger le 1er filtre qui a réalisé une integration mais pour rendre plus lisse le mvt du servo
    comme la moyenne qui lisse .


    Peut tu regarder sur ce site http://www.pobot.org/Wii-Nunchuck-Ar...vomoteurs.html
    la partie Lisser les valeurs de l’accéléromètre

    Car on peut voir que la personne passe des donnés brutes et aux donnés d'angles . J'ai peur qu'on fasse fausse route car les personnes qui integrent sont celles qui n'utilisent pas la nunchuck car il n'ont pas accé au librairies WIIchuck

    Et dans ce cas pas besoin d'integrer et si j'utilise le filtre kalman c'est juste pour lisser comme avec une moyenne de lissage



    LA PARTIE QU4ILS DONNENT FAIT PARTIE DE LA LIBRAIRIE WIICHUCK
    Dernière modification par pseudok ; 21/11/2014 à 13h57.

  24. #174
    pseudok

    Re : nunchuck+lcd+arduino

    est ce que si on met en place un algorithme permettant de lisser
    la valeur de l’accéléromètre. Tout d’abord, on ne va pas utiliser
    les valeurs brutes des 3 axes mais les convertir en angles "roll" et "pitch".
    Est-ce que cela pourrais regler les problème d'integration ??



    Nous devons voir quel genre de données
    nous recevions de l'accéléromètre dans la Wii Nunchuck.
    L'Arduino dispose d'une bibliothèque prête à l'emploi pour l'interfaçage


    la librairie WiiChuck prend soin de calculer les données de tangage et de roulis

    pour des valeurs
    (roulis, tangage, accel x, accel y, accel z)
    (57 , 77 , 385 , 45 , 243 )


    Il faut savoir ue les données de roulli (roll) fonctionne de -90 à 90 degrés
    et les donnés de tangage (pitch) fonctionne de 0 à 180 degrès



    Servo servoRoll;
    Servo servoPitch;
    WiiChuck chuck = WiiChuck();


    void setup() {

    servoRoll.attach();
    servoPitch.attach();

    roll = max(roll, -90);
    roll = min(roll, 90);



    pitch = max(pitch, 0);
    pitch = min(pitch, 180);

    }


    void loop() {


    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.println();
    }








    }

    .....
    }

  25. #175
    Yoruk

    Re : nunchuck+lcd+arduino

    Laisse tomber l'histoir du joystik et du code .
    Il faut faire cela avant et selon moi on devra faire appelle au filtre khalman énoncé précédemment

    Laisse tomber l'histoir du joystik et du code . Il faut faire cela avant et selon moi on devra faire appelle au filtre khalman énoncé précedement
    Tu te relis parfois ?

    Citation Envoyé par pseudok Voir le message
    En effet , il y à un souci . Selon moi ,il faut filtrer les données provenant de l'accéleromètre dans le but d'obtenir la vitesse et la position dans l'espace
    Je n'utiliserai pas le terme "filtrer"...

    Mais integrer comment ?(d'après mon cours ,je sais juste que le filtre passe bas à a un comortement integrateur et cela ne m'avance pas vraiment. Comment puis-je integrer selon toi
    directement sur le code arduino avec un algorithme ( de lignes de codes en plus ) ou filtrer électroniquement (soit faire un montage et rajouter des composants )
    Les 2 sont possibles...


    Or ,le fait d'intégrer la vitesse et la position entraine de nombreuses erreurs
    Qui t'as parlé d'intégrer la vitesse et la position ?

    toutes les personnes que j'ai vu utilisant la nunchuck . Utilise seulement les données brutes et ne passe pas des données d'accé à de sdonnés
    de position et utilise un filtre kalman non pas pour corriger le 1er filtre qui a réalisé une integration mais pour rendre plus lisse le mvt du servo
    comme la moyenne qui lisse .
    Bon bah alors demande à ces personnes de te montrer comment elles font...

    Peut tu regarder sur ce site http://www.pobot.org/Wii-Nunchuck-Ar...vomoteurs.html
    la partie Lisser les valeurs de l’accéléromètre

    Car on peut voir que la personne passe des donnés brutes et aux donnés d'angles . J'ai peur qu'on fasse fausse route car les personnes qui integrent sont celles qui n'utilisent pas la nunchuck car il n'ont pas accé au librairies WIIchuck
    En gros, ton projet consiste à refaire ce que proposent ces gens ?
    La robotique, c'est fantastique !

  26. #176
    pseudok

    Re : nunchuck+lcd+arduino

    Comment puis-je integrer selon toi
    directement sur le code arduino avec un algorithme ( de lignes de codes en plus ) ou filtrer électroniquement (soit faire un montage et rajouter des composants )
    Que me conseilles tu et comment le réaliser ?

    ton projet consiste à refaire ce que proposent ces gens ?
    non je n'ai pas envie de faire fausse route

    Je reste à ta disposition pour la suite

  27. #177
    pseudok

    Re : nunchuck+lcd+arduino

    bonjours ,

    Je suis entrain de faire le code avec la librairie Kalman
    Et il s'avère que j'ai reçu les régulateurs peut tu m'aider à les installer ??
    (par contre , je n'arrive pas à savoir sur internet laquelle des résistances 101 et 10nJ100 est de 100nF??)


    je m'occupe d'abord du branchement du 7805
    voici les 2 datasheets mais je ne vois pas comment les utiliser notamment due au faite que je ne vois pas ou est l'entrée et la sortie
    dans le breadboard

    Ou sont
    L’Input – pour la tension d’entrée est ce la broche à gauche du régulateur ??
    L’Ouput – pour la tension de sortie à droite ??
    e Ground – pour la masse ou au milieu ?? doit il être lié au - (la masse) de la breadboard ??

    dois-je relier la broche du milieu du régulateur au borne -(masse) de la breadboard , et les 2 autres broches ??

    http://datasheet.octopart.com/L7805C...et-7264666.pdf p4 fig3
    https://www.sparkfun.com/datasheets/.../LD1117V33.pdf p3 fig 4


    I(max)>I(totale de tout les composants )
    I(total des composants)=I(4*servo)+I(lcd)= 4* intensité servo inconnue mA+15mA=15mA + intensité servos inconnue <1.5 A
    soit il faut que l'intensité de chacune de mes servos soit égale ou inférieur à 370mA
    Supposons que c'est le cas .
    Dernière modification par pseudok ; 22/11/2014 à 14h16.

  28. #178
    Yoruk

    Re : nunchuck+lcd+arduino

    Citation Envoyé par pseudok Voir le message
    Que me conseilles tu et comment le réaliser ?
    Sorts tes cours de traitement du signal !

    non je n'ai pas envie de faire fausse route
    C'est à dire ?

    Je suis entrain de faire le code avec la librairie Kalman
    amuse toi bien

    Et il s'avère que j'ai reçu les régulateurs peut tu m'aider à les installer ??
    Je t'ai demandé 15 fois de faire un SCHÉMA !!!

    (par contre , je n'arrive pas à savoir sur internet laquelle des résistances 101 et 10nJ100 est de 100nF??)
    J'aimerai que tu prennes conscience qu'il est difficile d'aider un gars qui ne prends pas la peine de lire les messages des intervenants, ne se relit pas lui même, et ne fait aucun effort sur orthographe/grammaire. Il est également difficile d'aider un mec qui ne fait pas la différence entre une résistance et un condensateur... Et ça ne te vient pas à l'idée que mettre une photo des composants serait un minimum pour qu'on puisse t'aider ?

    Ou sont
    L’Input – pour la tension d’entrée est ce la broche à gauche du régulateur ??
    L’Ouput – pour la tension de sortie à droite ??
    e Ground – pour la masse ou au milieu ?? doit il être lié au - (la masse) de la breadboard ??

    dois-je relier la broche du milieu du régulateur au borne -(masse) de la breadboard , et les 2 autres broches ??

    http://datasheet.octopart.com/L7805C...et-7264666.pdf p4 fig3
    https://www.sparkfun.com/datasheets/.../LD1117V33.pdf p3 fig 4
    Schéma....!
    La robotique, c'est fantastique !

  29. #179
    pseudok

    Re : nunchuck+lcd+arduino

    bonjours

    voici le schéma que j'ai fais

    voila j'ai mis le régulateur comme suit mais je crois que je vais devoir déplacer la lcd qui est sur les ports + et - car je risque de la griller
    et peux tu m'indiquer ou la mettre à la place avec aussi les servo pour les alimenter

    sur la colonne du condensateur de debut ou de fin ??


    (par contre , je n'arrive pas à savoir sur internet laquelle des résistances 101 et 10nJ100 est de 100nF??)
    voila, on ma dit la réponse .Sur la boite de mon kit starter .Il indique que j'ai des condensateurs de 100nF or ce n'est pas le cas car

    101=100pF
    10nJ100=10nF

    comme j'ai aussi des condensateurs de F25V de 100µF on ma dit de les prendre à la place de ceux de 100nF=0.1µF
    le rapport entre les 2 et de 1000 puis-je le faire sans courir le risque de tout griller ??


    pain1.jpg
    pain2.jpg

    PS : pour le reste on verra après
    Dernière modification par pseudok ; 24/11/2014 à 10h41.

  30. #180
    Yoruk

    Re : nunchuck+lcd+arduino

    C'est pas un schéma ! C'est une jolie vue d'une plaque perforée, qui ne sert à rien tant que l'on a pas de schéma. Pas de noms ni de valeurs de composants, visiblement un seul régulateur... Bref, sûrement tout faux.

    Parenthèse, la résistance de ta vue du bas est surement mal câblée...
    Dernière modification par Yoruk ; 24/11/2014 à 12h24.
    La robotique, c'est fantastique !

Page 6 sur 7 PremièrePremière 6 DernièreDernière

Discussions similaires

  1. LCD affichant les info (axes X Y Z ) de la nunchuck Wii
    Par pseudok dans le forum Électronique
    Réponses: 0
    Dernier message: 27/10/2014, 11h11
  2. arduino wii nunchuck
    Par pseudok dans le forum Électronique
    Réponses: 5
    Dernier message: 25/10/2014, 00h05
  3. Arduino anti rebond avec arduino
    Par sari12 dans le forum Électronique
    Réponses: 13
    Dernier message: 23/10/2014, 17h04
  4. Communication arduino-arduino avec module Xbee
    Par TPESI22012 dans le forum Électronique
    Réponses: 2
    Dernier message: 23/12/2013, 17h24
  5. Arduino
    Par askico dans le forum Électronique
    Réponses: 1
    Dernier message: 24/01/2012, 21h31
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...