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

nunchuck+lcd+arduino



  1. #61
    pseudok

    Re : nunchuck+lcd+arduino


    ------

    non , on sait mal compris j'ai des bases en algorithmique .
    Mais pas celle en C ni en C + . Il faut savoir que au debut du if ,il y a les termes countLoop et nToAvg qui servent à définir des variables .
    je ne comprends pas déja pourquoi les variables servo1total et countLoop sont initialisés à la valeur 0 .
    Donc if (quelque chose )
    je fait la moyenne de servo1total
    return (le résultat au servo) avec le Serial.print(servo1=)

    J 'ai déja du mal à comprendre la condition if countLoop == nToAvg

    donc si count loup egale à 5 ,mais ,count loop s'est quoi, le nombre de lectures réaliser par le système ?

    -----
    Dernière modification par pseudok ; 31/10/2014 à 17h01.

  2. #62
    Yoruk

    Re : nunchuck+lcd+arduino

    J'allais réagir en disant la même chose que dje8269.

    Tu t'y prends mal en programmation... Avant de partir tête baissée sur du code, qui plus est que tu ne maitrises pas, il faut d'abord que tu arrêtes ce que le programme doit faire, et comment. Tu construit d'abord un algorithme en français, qui explique avec des phrases simple les étapes à effectuer pour obtenir ton résultat. Ici, je t'aide, tu pourrais avoir un truc du genre :


    Variable = 0

    Somme = 0


    Somme = Somme + valeur lue, Variable = variable +1

    Variable est inférieur à 5 ? Si oui, je recommence la ligne du dessus
    Si non, je calcule Moyenne = Somme / 5

    (Bon le mieux est de construire un organigramme).

    Une fois ceci construit selon ta logique, alors seulement tu dégaines le code machine et tu adaptes, "bêtement" ton organigramme en code, en utilisant les fonctions qu'il propose, du genre des boucles WHILE, des conditions IF et autres. Tu n'as rien à réinterpréter, si ton organigramme est bien fait, cette opération se passe à priori bien.

    Commence par structurer l'intégralité de ton programme, en partant des données de départ et de ce que tu dois faire, et rédige un organigramme.

    Ce n'est pas en tentant de comprendre des lignes de code prises ici ou là que tu vas résoudre ton problème. Ta problématique est spécifique, tu auras du mal à faire un programme qui marche juste en tentant d'assembler des briques prises un peu partout...
    La robotique, c'est fantastique !

  3. #63
    pseudok

    Re : nunchuck+lcd+arduino

    Merci, ça met très utile.

  4. #64
    pseudok

    Re : nunchuck+lcd+arduino

    bonjours

    J'ai voulu introduire mon code de moyenne dans mon code initiale mais celui-ci ne passe pas .
    Pouvez- vous m'expliquer pourquoi ?
    Par contre j'utilise les termes servo1Total et nblect (pour nbre de lectures) et je ne crois pas qu'ils fassent partie des bibliothèques que j'utilise

    Nom : pain.jpg
Affichages : 74
Taille : 120,4 Ko

    #include <math.h>


    #include "WiiChuck.h"
    #include "Servo.h"

    Servo servo1;
    ….

    void setup() {
    ….
    servo1.attach(13);
    ….
    }

    int countLoop = 0;
    float servo1Total = 0.0

    int nblect = 5;





    void loop() {
    ….

    servo1Total += chuck.readservo1(

    if (countLoop == nblect) {
    int servo1 = servo1Tot/nblect;
    servo1 = round(servo1/5)*5;
    servo1 = max(servo1, -80);
    servo1 = min(servo1, 80);
    servo1 += 80;

    Serial.print("servo1=");
    Serial.print(servo1);

    servo1Total= 0.0;
    countLoop = 0;
    }


    else
    {
    servo1Total += chuck.readservo1();
    countLoop++;
    }
    }

  5. #65
    pseudok

    Re : nunchuck+lcd+arduino

    De plus ,je souhaiterais utiliser la librairie kalman.h . Ou puis-je là trouver ? car je ne là trouve pas sur le site arduino


    j'ai trouvé celle là https://github.com/TKJElectronics/Ka...aster/Kalman.h

    mais il me semble que lorsque je la copie sur une feuille et souhaite l'utiliser comme la librairie WiiChuck sur arduino cela ne marche pas ?
    Comment puis-je faire ?

  6. #66
    Yoruk

    Re : nunchuck+lcd+arduino

    1-Tu as fait l’algorithme en français, comme on te l'a conseillé ? Je veux bien le voir...
    2-Poste le TEXTE de tes messages d'erreur (là je n'ai que la fin de ton écran, et pas en bonne qualité). C'est souvent la première erreur qui est déterminante.

    3-Ton extrait de code comporte plein d'erreurs de syntaxe, je ne sais pas si c'est ton copié-coller qui a foiré ou autre... Enfin moi je met toujours les déclarations AVANT la boucle setup()

    4-C'est quoi la librairie "kalman.h" ? En quoi tu en as besoin pour ton projet ?
    La robotique, c'est fantastique !

  7. #67
    pseudok

    Re : nunchuck+lcd+arduino

    Voilà autre chose .
    Je sais que mettre un else après un for ce n'est pas possible mais je ne voyais pas comment bien utiliser le if
    Par contre le but de cette moyenne est d'améliorer le mécanisme soit le rendre plus lisse . Or j'ai l'impression que c'est juste un code qui
    prend de la place sans la moindre utilité ? car print "moyenne " oui mais cette moyenne est reçu comment par le mécanisme .
    Par contre, le countloop est-il plus approprié ?


    De plus , il me semble qu'il faut utiliser des variables précises en fonction des librairies utilisé car je fais une moyennes des informations qui vont etre envoyé au servo 1 donc la variable représentant ces informations présente un nom précis (est-ce servo1 ? ) et la variable comprenant la totalité de ces informations (est-ce servo1total?)
    car je souhaite réaliser une moyenne qui ait un impact réelle sur le mécanisme.
    J'utilise nblect ! MAIS PEUT ETRE QUE POUR LE SYSTEME nblect c'est rien du tout.




    int nblect=0;

    int somme=0;

    float moyenne = 0; //moyenne

    servo1Total=0;


    void loop() {
    ….

    for(nblect=0; 5<nblect; nblect++)
    servo1Total += chuck.readservo1()
    Moyenne1= servo1Total/nblect;


    Serial.print("Moyenne1=");
    Serial.print(Moyenne);


    else
    {
    servo1Total += chuck.readservo1();
    countLoop++;
    }
    }
    voici ce qui m'arrive avec le code précedent . ( en haut des informations il n'y à rien )
    Nom : paint2.jpg
Affichages : 69
Taille : 118,2 Ko


    par contre le filtre Kalman me permettra d'améliorer les informations
    Le système est perturbé par des bruits et donc je verrais par la suite que la moyenne ne permet pas vraiment d'améliorer et de lisser les informations et donc j'essayerais d'utiliser un filtre Kalman (qui est assez compliqué) . Il est utilisé dans les centrales inertielles .

    https://www.youtube.com/watch?v=biY7F-tLwE8
    Dernière modification par pseudok ; 05/11/2014 à 19h21.

  8. #68
    pseudok

    Re : nunchuck+lcd+arduino

    Une autre question . Est-ce qu'on peut utiliser l'interface arduino comme un oscilloscope car on peut voir sur la vidéo que je t'ai envoyé , l'individu obtient des courbes .

    est voici un codes open source me permettant également de lisser les valeurs de l'accéleromètre réalisé par tim hirzel .
    je dois remplacer dans mon code servo 1 par servoRoll et servo 2 par servoPitch .
    car on ne va pas utiliser les valeurs brutes des 3 axes mais les convertir en angles "roll" et "pitch".


    /**
    * Nunchuck -- Use a Wii Nunchuck
    * Tim Hirzel http://www.growdown.com
    */
    // 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); // Radius = 210
    }
    Dernière modification par pseudok ; 05/11/2014 à 19h32.

  9. #69
    Yoruk

    Re : nunchuck+lcd+arduino

    Tu t'es donné la peine de L I R E mon message ? Celui dans lequel je t'ai posé des questions, et dont les réponses auraient pu faire avancer le shmilblick...


    Je sais que mettre un else après un for ce n'est pas possible mais je ne voyais pas comment bien utiliser le if
    Voilà justement pourquoi on te conseille :
    - d'arrêter ton cahier des charges, et ne pas rajouter des éléments à ton projet au fur et à mesure que tu avances;
    - écrire l'algo de fonctionnement global de ton système, en FRANÇAIS, puis le convertir en langage machine.

    On t'a déjà demandé tout ça, si tu ne veux pas, pas la peine que je perde mon temps...

    PS : Je te déconseille de chercher à utiliser un filtre, vu qu'un simple calcul de moyenne te semble difficile...
    La robotique, c'est fantastique !

  10. #70
    pseudok

    Re : nunchuck+lcd+arduino

    variable= 0

    somme = 0

    moyenne=0



    somme = variable +1
    si (variable < 5 )
    somme = variable +1 // en faite la variable qui a le nom variable est égale à 1 et non plus à 0 l'orqu'on n'avait pas encore réalisé la boucle


    sinon
    Moyenne = Somme / 5

    retoune(moyenne)

  11. #71
    pseudok

    Re : nunchuck+lcd+arduino

    numlect=5 ( numlect=variable représentant le nombre de lecture à utiliser pour réaliser cette moyenne)
    cette variable est constante et entière donc ( const int numlect=5 )

    index=0 (index= ma variable correspondant aux nombres de lectures) (int index=0)

    Somme=0 (ensemble des information de l'accéléromètre de la wiichuck) (int Somme=0)

    Moyenne=0 ( la moyenne recherchée ) (int Moyenne =0)


    je vais exécuter la boucle 5 fois
    la première fois ou on parcours la boucle la lecture est de 0 (for int lecture =0, lecture< numlect, lecture ++)
    lire[lecture]=0


    Somme= Somme+lire[index]
    Si index inferieur à 5 lectures
    if(index<numlect)
    index=index+1

    Sinon
    Moyenne=Somme/numlect
    retourner la moyenne
    ( Serial.print("Moyenne") )

    pour utiliser les valeurs analogiques exploitable je dois faire readings[index]=analogRead(input pin (fil blanc de la nunchuck))
    Dernière modification par pseudok ; 06/11/2014 à 22h36.

  12. #72
    Yoruk

    Re : nunchuck+lcd+arduino

    Faux... Ne part pas directement dans du code, mais analyse bien d'abord. Il y a des choses qui ne vont pas. Genre tu mélanges des IF avec des boucles for... next alors qu'ici tu peux t'en passer.

    Aussi, ne nomme jamais une variable "VARIABLE" car ça ne facilite pas la lecture et la compréhension du programme.

    Ton code message #70 est une bonne base, mais il te manque quelques éléments... Et pas besoin de boucle for !

    Allez, je t'aide un peu, je t'ai ajouté en rouge ce que tu as oublié :

    Code:
    index = 0
    
    somme = 0
    
    moyenne=0
    
    Les lignes du dessus sont à placer dans ta sub d'initialisation. Ensuite, dans ta boucle principale :
    
    
    SI Index < 5 alors
    
           somme = somme + valeur lue sur la manette
     
           index= index +1 
    
    SINON
    
           Moyenne = Somme / 5
    
           retourne(moyenne) ou 
    
           Pilotage servo à moyenne
    
           Somme = 0
           index = 0 pour pouvoir recommencer
    
    FIN SI
    
    Là, ça devrait marcher....!
    La robotique, c'est fantastique !

  13. #73
    pseudok

    Re : nunchuck+lcd+arduino

    Maintenant que j'ai le code en français , je dois le convertir en langage machine .


    int index = 0; // variable de référence correspondant au nombre de lecture

    float Total = 0.0 ; // Somme des informations délivrés par la WiiChuck . Somme c'est en francais donc je vais utiliser à la place Total

    int average = 0; // moyenne en anglais c'est average . Je dois donc utiliser average



    void setup()
    {

    Serial.begin(9600);

    }


    void loop() {
    .....



    if (index< 5) { // on commence avec index=0 donc index ne peut pas être>5 ?
    Total += chuck.readindex() //Somme = Somme + valeur lue sur la manette ; j'aurais pu remplacer index par servo1 car index= variable de réference correspondant aux informations de lecture)
    int index= index +1;
    }

    else {
    int average = Total / 5;

    Serial.print("Moyenne");
    Serial.print(average);

    int Total = 0;
    int index = 0; // pour pouvoir recommencer et lisser le système sur la durée
    delay(1); // delai entre les lectures pour une stabilité
    }
    }



    puis-je l'introduire dans mon code initiale pour voir si il marche ?
    Dernière modification par pseudok ; 07/11/2014 à 13h09.

  14. #74
    Yoruk

    Re : nunchuck+lcd+arduino

    Citation Envoyé par pseudok Voir le message
    puis-je l'introduire dans mon code initiale pour voir si il marche ?
    A ton avis ?

    Somme c'est en francais donc je vais utiliser à la place Total
    moyenne en anglais c'est average . Je dois donc utiliser average
    Tu peux très bien mettre des noms de variable avec un nom français...

    Attention, ton delay n'est pas au bon endroit !!
    La robotique, c'est fantastique !

  15. #75
    pseudok

    Re : nunchuck+lcd+arduino

    ou puis-je le mettre ?

  16. #76
    Yoruk

    Re : nunchuck+lcd+arduino

    Bin... Pas au moment où tu effectues le calcul de la moyenne... Mais plutôt au moment de la lecture.

    Sauf si bien sûr tu en as un ailleurs dans ta boucle, mais vu que je n'ai pas le code en entier...
    La robotique, c'est fantastique !

  17. #77
    pseudok

    Re : nunchuck+lcd+arduino

    expected unqualified id before 'else'
    expected declaration before '}' token


    voila les erreurs que j'obtiens .Est ce due a quoi?
    mais j'ai modifié le code suivant la librairie car le nombre d'erreurs était plus important

  18. #78
    Yoruk

    Re : nunchuck+lcd+arduino

    T'as toujours pas compris que sans code je peux rien faire ?
    La robotique, c'est fantastique !

  19. #79
    pseudok

    Re : nunchuck+lcd+arduino

    voila mon code .J'ai essayé de trouver le problème mais je n'ai pas trouvé.

    #include "WiiChuck.h"
    #include <Wire.h>




    int index =0;
    int Total =0.0;
    int average = 0;





    WiiChuck chuck = WiiChuck();

    void setup(){
    {
    Serial.begin(9600);
    Wire.begin();



    }

    void loop()
    if( index < 5){
    Total += chuck.readRoll();
    index=index+1;


    }else {
    average= Total / 5;
    Serial.print("Moyenne");
    Serial.print(average);

    Total=0;
    index=0;
    }

    }

    Nom : pain moyen.jpg
Affichages : 55
Taille : 60,2 Ko

  20. #80
    Yoruk

    Re : nunchuck+lcd+arduino

    Il te manque un "{" juste après le loop() et tu en as un en trop après setup()...

    Revois des définitions de fonctions... Il te dit la ligne sur laquelle il bloque ! Bon ce n'est pas forcément la ligne surlignée qui est en cause, c'est parfois celle du dessus.

    Truc : Dans ton éditeur, fait Outils -> Formatage automatique, pour indenter ton code de façon à le rendre plus lisible. Comme ceci, les erreurs d'ouverture/fermeture d'accolades sont assez faciles à voir.
    La robotique, c'est fantastique !

  21. #81
    pseudok

    Re : nunchuck+lcd+arduino

    merci . Il s'agissait bien de ces erreurs.

    Je vais essayer le code et le comparer avec mon code sans la moyenne et te recontacter .

  22. #82
    pseudok

    Re : nunchuck+lcd+arduino

    j'ai l'impression que mon système marche de manière moins fluide que sans la moyenne .
    Selon toi c'est due à quoi? Je crois que ma moyenne n'est pas bonne!

    Bien sur mes observations sont à l’œil nu et je voudrais vérifier avec une courbe .
    J'ai pu voir que certaines personnes utilisent sur arduino des courbes qui défilent en direct (comme un oscilloscope)
    En faite je voudrais voir sur ces courbes si l'impact des bruits est , le même ou diminué

    PS: je crois qu'il y a un souci avec le code
    Dernière modification par pseudok ; 08/11/2014 à 16h09.

  23. #83
    pseudok

    Re : nunchuck+lcd+arduino

    autre remarque

    dans la carte arduino, il y a 2 led orange

    Et je remarque que lorsque je remarque que 1 des 2 led s'allume + ou - intensément pour les 2 codes (codes servo sans moyenne et
    code servo avec moyenne)

    Mais lorsque j'utilise le code avec moyenne, il y a aussi la 2EME LED qui fait que de clignoter ,comme lorsque je téleverse un code
    mais ca ne s’arrête pas .




    ps: j'ouvre un post sur le filtre Kalman et pour savoir comment utiliser arduino ,pour obtenir des courbes

    je reste à ta disposition pour toutes aides ou renseignements complémentaires sur ce post et sur l'autre
    Dernière modification par pseudok ; 08/11/2014 à 16h42.

  24. #84
    Yoruk

    Re : nunchuck+lcd+arduino

    Bin oui logique que ça soit moins fluide... Tu récupères les données toutes les XX millisecondes, pour ensuite faire une moyenne et appliquer cette valeur... Tu perds en fluidité ! Tu peux toutefois jouer sur le temps entre chaque relevé et le nombre de valeurs utilisées, pour voir si le résultat colle mieux à ce que tu veux !

    Concernant les leds, une des leds s'active lors de l'envoi de données série sur le PC (les fameux serial.print). Aucun problème à priori.

    Euhhh tracer des courbes, excuse moi mais ça me semble un peu compliqué à ton niveau... Il faut, selon bien sûr ce que tu veux observer, envoyer les données concernées via liaison série au PC, puis récupérer ces données et générer des graphes... Pas simple !
    La robotique, c'est fantastique !

  25. #85
    pseudok

    Re : nunchuck+lcd+arduino

    Voici mon code . Selon toi, c'est logique que le servo à un mouvement moins fluide mais mon objectif était de fluidifier son mouvement soit tout le contraire!
    De le rendre lisse soit un "smoth" mais finalement corrige moi si je me trompe, ça corrige juste des erreurs qui tendent vers les extrêmes (ex: informations faussé de types :valeurs trop importantes( incohérentes), ou trop faible au cours du temps. En effet , ce moyennage rend le système plus stable car on obtient une moyenne des informations qui vont être réceptionnés par le servo mais ne le rendant pas plus fluide .
    Est-ce que rajouté un delay avec une valeur faible du style delay(10) ?
    Tu peux voir mon code , je n'ai pas utilisé de delay() donc puis-je en ajouter un?
    et ou puis-je le mettre?
    et bien sur ce delay, je doit mettre une valeur faible du type delay(1) delay(10) ou delay(100) pour effecter un moyennage dans un cours espace de temps au risque de rendre le système très saccadé. corrige moi si je me trompe


    AUTRE possibilité je prends un nombre de lecture plus faible du type 2ou 3 a la place de 5

    JE sais déjà que ce moyennage n’améliorera pas la fluidité de manière important mais je souhaite au minimum qu'il ne la rend pas moins
    fluide .


    #include "WiiChuck.h"
    #include <Wire.h>




    int index =0;
    int Total =0.0;
    int average = 0;





    WiiChuck chuck = WiiChuck();

    void setup()
    {
    Serial.begin(9600);
    Wire.begin();



    }

    void loop() {
    if( index < 5){
    Total += chuck.readRoll();
    index=index+1;


    }else {
    average= Total / 5;
    Serial.print("Moyenne");
    Serial.print(average);

    Total=0;
    index=0;
    }

    }

    En ce qui concerne la led . Ce n'est pas le fait que la 2eme led orange clignote qui me pose problème ,mais c'est le fait qu'elle clignote tout le temps lorsque j'utilise le code avec la moyenne et juste avec ce code là . Est - ce que c'est due au fait , que la moyenne est calculer au cours du temps et que l'arduino réalise des calculs de moyenne de manière infini

    Pour obtenir des courbes à partir ,d'après toi ,des valeurs du moniteur série, Est-ce compliqué
    Je dois rajouté des information à mon code ?

    merci

  26. #86
    Yoruk

    Re : nunchuck+lcd+arduino

    Je mettrai un délai... peut être à la fin de la boucle, juste avant le dernier "}". Mais tente aussi d'optimiser les valeurs...

    La led (à voir précisément laquelle, il y en a plusieurs) ne s'illumine que lorsque la arduino envoie ou réceptionne des données. Et tu as bien des serial.print dans ton code... Si tu n'en a pas besoin, tu peux les retirer !

    En fait, ton lissage c'est tout le problème de la lecture d'accélérations. Tu as vraiment des valeurs qui varient de façon extrême... Une autre idée serait peut être de ne pas envoyer brusquement le servo de, par exemple, 90 à 180°, mais de lui faire faire 91, petit délai, 92, petit délai... jusqu'à 180. Histoire de l'empêcher de faire des mouvements trop rapides.

    Oui pour des courbes il faut envoyer des infos via le port série, mais au lieu de les "lire" avec le moniteur série, tu utilises un autre soft qui va lui tracer les valeurs en fonction du temps par exemple.
    La robotique, c'est fantastique !

  27. #87
    pseudok

    Re : nunchuck+lcd+arduino

    optimiser les valeurs ??
    j'ai essayé de mettre le delay mais de nouvelles erreurs apparaissent car j'ai mon code moyenne dans mon code servo et lcd
    j'ai un delay à la fin . Est ce que ça revient à la même chose de le laisser ou il est ou de le mettre comme tu me dis ?

    voici la fin du code ou de delay est

    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(' ');
    // un petit delai pour pas saturer le servomoteur (attend quelques ms pr q le servo etteigne la position)
    delay(1);
    lcd.clear();
    }


    En fait, comme tu vois sur mon code de moyenne .J'ai utilisé le Roll "nunchuckRoll" car je devais coder en fonction de la librairie
    WiiChuck .Or je crois que Roll revient à l'axe Y car au tout début de mon code j'utilisais l'axe Y et non pas Roll
    Roll c'est un angle contrairement à l'axe Y
    Bon je reviendrais sur ca après .
    Pense tu que ca peut etre utile ??


    index = max(index, -80); j'ai des servo HD 160 deg
    index = min(index, 80);
    index += 80; faut-il rajouter 80 degré pour quelle corresponde à la gamme du servo ?


    Quelle soft dois-je utiliser pour tracer les valeurs en fonction du temps .

  28. #88
    Yoruk

    Re : nunchuck+lcd+arduino

    Citation Envoyé par pseudok Voir le message
    optimiser les valeurs ??
    Tenter d'augmenter/diminuer le nombre d'échantillons dans la moyenne, augmenter/diminuer le temps entre chaque relevé...

    Citation Envoyé par pseudok Voir le message
    j'ai essayé de mettre le delay mais de nouvelles erreurs apparaissent car j'ai mon code moyenne dans mon code servo et lcd
    j'ai un delay à la fin .
    Bah... Vérifie et corrige les erreurs en fonction des conseils que je t'ai déjà donnés...


    Citation Envoyé par pseudok Voir le message
    En fait, comme tu vois sur mon code de moyenne .J'ai utilisé le Roll "nunchuckRoll" car je devais coder en fonction de la librairie
    WiiChuck .Or je crois que Roll revient à l'axe Y car au tout début de mon code j'utilisais l'axe Y et non pas Roll
    Roll c'est un angle contrairement à l'axe Y
    Bon je reviendrais sur ca après .
    Pense tu que ca peut etre utile ??
    J'ai RIEN compris. Avec tes cinquante versions de code différentes (avec/sans moyenne, avec/sans écran LCD, avec/sans serial.print... ) et ton cahier des charges imprécis, difficile de s'y retrouver...

    Citation Envoyé par pseudok Voir le message
    Quelle soft dois-je utiliser pour tracer les valeurs en fonction du temps .
    Soit tu veux un truc en live et c'est difficile (j'avais déjà eu besoin d'un truc comme ça, je l'avais fait moi même), soit un truc qui trace après une période de relevés (excel...) et c'est plus simple.
    La robotique, c'est fantastique !

  29. #89
    pseudok

    Re : nunchuck+lcd+arduino

    En faite , la question que je te posais c'est :
    est-ce qu'il peut avoir plusieurs delay avec des utilités differentes dans un meme programme ?
    OU il y en a qu'un seul et il sert pour l'ensemble du code car entre ma boucle if et mon delay , il y a de nombreuses lignes de code.

    OUI , j'ai fait varié l'echantillon soit le 5 dans la division .
    Et il semble que si je l'augmente de beaucoup comme 1000 , le servo semble avoir une vitesse de rotation continue au cours du temps meme si je bouge la télecommande de manière vive .Par contre il semble que ,il semble que le servo commence à bougé peut de temps après le geste (en ms) donc à l'oeil nu il semberait que le système soit moins réactif si on augmente l'echantillon

    Lorsque je choisis 3 lectures à la place de 5 lectures , il semble que j'obtient pratiquement la meme chose (mais le système est plus réactif)



    En faite , je sais que c'est difficile de me comprendre car en faite mon code c'est la somme du code servo + nunchuck , le code lcd en fonction de la nunchuck et le code de la moyenne en fonction de la nunchuck .
    en faite , je souhaite bouger des servos avec une nunchuck ( avec une moyenne pour lisser le système ) et voir en meme temps les valeurs sur la lcd comme nous avons pu voir (j'ajouterais un 2ème servo par la suite ) .
    Dans le but , d'un compte rendu j'aimerais ajouter un filtre kalman pour analyser et corriger le système

    Je vais essayé de t'expliquer .
    J'utilise les informations de l'acceleromètre 3 axes et je crois que les informations que j'utilise en ce moment dans mon code (comme tu peux le voir en dessous) sont des informations brute suivant l'axe y (et non de type angles ).

    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 accelX = ((data[2] << 2) + ((data[5] >> 2) & 0x03) - ZEROX);
    double accelY = ((data[3] << 2) + ((data[5] >> 4) & 0x03) - ZEROY);
    double accelZ = ((data[4] << 2) + ((data[5] >> 6) & 0x03) - ZEROZ);

    // on limite la valeur entre -180 et 180
    int value = constrain(accelY, -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 ( //dit au servo d'aller à la position value ' )
    servomoteur.write(value);

    Et ce que je vais faire par la suite c'est utiliser utiliser les infomations des angles :Roll (correspondant à un servo 1)
    Pitch (cooespondant au serco 2 )


    on bongera le servo 1 à partir des infotmations de la nunchuck qui détecte l’inclinaison latérale de la manette (ROLL) et le servo 2 à l'aide de l’inclinaison verticale (PITCH).

    on ne va pas utiliser les valeurs brutes des 3 axes mais les convertir en angles "roll" et "pitch".
    Pourquoi ? car la librairie Wiichuck est ecrite avec de Roll et Pitch .
    Tu as pu voir que pour la moyenne j'ai utilisé Total += chuck.readRoll(); car ou sinon je n'aurais pas pu extraire les informations de la manette pour faire une moyenne.

    Pour le truc du soft , je sais qu'on peut utiliser mathlab,mais après devrais-je coder le filtre kalman sur mathlab?
    ou sais-tu utiliser graph Serial Float à partir de arduino
    Pr obtenir quelque chose en live .il faut coder en arduino ,c'est dur ?
    Moi , si une période de relevé excel me permet de travaille sur le filtre d'en déduire des choses tout comme le graphe en direct je veux bien essayé !

  30. #90
    Yoruk

    Re : nunchuck+lcd+arduino

    Citation Envoyé par pseudok Voir le message
    En faite , la question que je te posais c'est :
    est-ce qu'il peut avoir plusieurs delay avec des utilités differentes dans un meme programme ?
    OU il y en a qu'un seul et il sert pour l'ensemble du code car entre ma boucle if et mon delay , il y a de nombreuses lignes de code.
    Non, tu peux heureusement mettre autant de delay que tu veux, aux endroits que tu veux... Le seul problème, si tu en ajoute trop, est qu'il va forcément y avoir ralentissement de ton programme...

    Citation Envoyé par pseudok Voir le message
    En faite , je sais que c'est difficile de me comprendre car en faite mon code c'est la somme du code servo + nunchuck , le code lcd en fonction de la nunchuck et le code de la moyenne en fonction de la nunchuck .
    en faite , je souhaite bouger des servos avec une nunchuck ( avec une moyenne pour lisser le système ) et voir en meme temps les valeurs sur la lcd comme nous avons pu voir (j'ajouterais un 2ème servo par la suite ) .
    Dans le but , d'un compte rendu j'aimerais ajouter un filtre kalman pour analyser et corriger le système
    Donc tu travailles sur un programme unique qui contient tout, et pas un bout de code avec le LCD que je modifie puis que je compile avec le premier pour voir...

    Citation Envoyé par pseudok Voir le message
    Je vais essayé de t'expliquer .
    J'utilise les informations de l'acceleromètre 3 axes et je crois que les informations que j'utilise en ce moment dans mon code (comme tu peux le voir en dessous) sont des informations brute suivant l'axe y (et non de type angles ).


    Et ce que je vais faire par la suite c'est utiliser utiliser les infomations des angles :Roll (correspondant à un servo 1)
    Pitch (cooespondant au serco 2 )

    on bongera le servo 1 à partir des infotmations de la nunchuck qui détecte l’inclinaison latérale de la manette (ROLL) et le servo 2 à l'aide de l’inclinaison verticale (PITCH).

    on ne va pas utiliser les valeurs brutes des 3 axes mais les convertir en angles "roll" et "pitch".
    Pourquoi ? car la librairie Wiichuck est ecrite avec de Roll et Pitch .
    Tu as pu voir que pour la moyenne j'ai utilisé Total += chuck.readRoll(); car ou sinon je n'aurais pas pu extraire les informations de la manette pour faire une moyenne.
    Euhh oui bon d'accord, après ça c'est ton projet, si tu penses que ça peut marcher...

    Citation Envoyé par pseudok Voir le message
    Pour le truc du soft , je sais qu'on peut utiliser mathlab,mais après devrais-je coder le filtre kalman sur mathlab?
    ça dépend... Tu peux filtrer à la source (sur arduino) et visualiser les 2 types de courbes (filtrée, non filtrée), ou bien effectivement envoyer les infos brutes de la arduino et filtrer sur le soft. A voir...

    Citation Envoyé par pseudok Voir le message
    Pr obtenir quelque chose en live .il faut coder en arduino ,c'est dur ?
    Nan justement, c'est pas en arduino ! L'idée est d'envoyer les données les unes à la suite des autres comme tu le fais actuellement, et coder (pourquoi pas dans matlab) un soft qui va récupérer ces données qui viennent, et les tracer. Excel, c'est un peu la même idée, mais il va falloir quand même un soft pour récupérer les données et les enregistrer !!!
    La robotique, c'est fantastique !

Page 3 sur 7 PremièrePremière 3 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, 12h11
  2. arduino wii nunchuck
    Par pseudok dans le forum Électronique
    Réponses: 5
    Dernier message: 25/10/2014, 01h05
  3. Arduino anti rebond avec arduino
    Par sari12 dans le forum Électronique
    Réponses: 13
    Dernier message: 23/10/2014, 18h04
  4. Communication arduino-arduino avec module Xbee
    Par TPESI22012 dans le forum Électronique
    Réponses: 2
    Dernier message: 23/12/2013, 18h24
  5. Arduino
    Par askico dans le forum Électronique
    Réponses: 1
    Dernier message: 24/01/2012, 22h31
Découvrez nos comparatifs produits sur l'informatique et les technologies.