IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Besoin d'aide programme servomoteur


Sujet :

Arduino

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 1
    Par défaut Besoin d'aide programme servomoteur
    Bonjour à tous je suis étudiant en SIN et j'aurais besoin d'un coup de main pour le programme de mon projet de terminale.
    Mon projet est un bras robotisé avec 6 servomoteurs, et il est censé être piloté avec une carte Arduino Uno, avec un shield joystick (Sparkfun) et tout ça à distance grâce à des modules XBee. Pour le moment le programme pour piloter le bras est assez rudimentaire, il permet juste de contrôler deux servomoteurs à la fois, chacun avec un des axes du joystick.

    Voilà à quoi il ressemble :

    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    #include <Servo.h> 
    const int posMin=550; // largeur impulsion en μs correspondant à la position 0° du servomoteur
    const int posMax=2350; // largeur impulsion en μs correspondant à la position 0° du servomoteur
    const int brocheServo1=8;
    const int brocheServo2=9; // broche du servomoteur
    const int brocheRVar1=A0;
    const int brocheRVar2=A1; // broche de la résistance variable
    const int BP1=2;
    const int BP2=3;
    int positionServo1=0;
    int positionServo2=0; // variable de positionnement du servomoteur
    int mesureRVar1=0;
    int mesureRVar2=0; // variable pour la mesure de la résistance variable
    Servo servo1;
    Servo servo2; // déclaration d'un objet servomoteur
     
    void setup() {
    Serial.begin(9600);
    servo1.write(90);
    servo2.write(90);
    servo1.attach(brocheServo1, posMin, posMax);
    servo2.attach(brocheServo2, posMin, posMax);//attache le servomoteur à la broche
    }
     
    void loop() {
    mesureRVar1=analogRead(brocheRVar1);
    mesureRVar2=analogRead(brocheRVar2);// mesure la tension sur la broche analogique
    positionServo1=map(mesureRVar1, 0,1023, 0, 180);
    positionServo2=map(mesureRVar2, 0,1023, 0, 180);// convertit la valeur en degrés
    Serial.println(positionServo1);
    Serial.println(positionServo2);
    servo1.write(positionServo1);
    servo2.write(positionServo2);// positionne le servomoteur dans l'angle voulu
    }

    Mais le programme est loin d'être opérationnel (il pilote 2 servomoteurs sur 6) et je suis bloqué pour la suite je m'explique :

    Je voudrais créer un système de "profil", le joystick ayant 2 axes uniquement, je voudrais pouvoir utiliser deux boutons poussoirs pour changer les 2 servomoteurs pilotables par le joystick. Exemple : je pilote les servomoteurs 1 et 2, j'appuie sur le bouton, je pilote maintenant les servomoteurs 3 et 4, j'appuie encore une fois, je pilote 5 et 6. Je bloque vraiment pour ces lignes car je sais vraiment pas quelle fonction utiliser.

    Deuxième chose qui cloche, les servomoteurs reviennent à leur position initiale lorsque le joystick est lâché, ce qui rend le pilotage du bras assez fastidieux, et ça le sera d'autant plus quand les 6 servomoteurs seront pilotés. Je sais pas trop quoi modifier dans le programme pour y remédier.

    Et dernière chose, qui n'est pas question de programme, je fais face à un soucis pour ma communication sans fil avec XBee : je peux pas brancher le shield XBee par dessus le shield Joystick (le joystick bloque le shield) et je peux pas le déporter sur une bread board à côté. J'ai vu sur un site un shield joystick avec un slot pour module XBee intégré mais je l'ai uniquement vu sur un site étranger et on manque de temps pour le commander. Vous auriez une solution ?

    Si je me suis mal exprimer quelque part (ce qui est sûrement le cas) faite le moi savoir et je corrigerais. Merci d'avance pour vos réponses !

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 190
    Billets dans le blog
    47
    Par défaut
    Salut,

    ça fait beaucoup de choses à régler alors que les échéances approchent à grands pas

    Citation Envoyé par Datsik Voir le message
    Deuxième chose qui cloche, les servomoteurs reviennent à leur position initiale lorsque le joystick est lâché, ce qui rend le pilotage du bras assez fastidieux, et ça le sera d'autant plus quand les 6 servomoteurs seront pilotés. Je sais pas trop quoi modifier dans le programme pour y remédier.!
    C'est parce que la position de ton servo est directement l'image de la position de ton joystick. Si tu relâches le joystick, la tension délivrée sur A0 ou A1 fait que le servo revient à la position initiale.

    Il faut mémoriser la position d'un servo dans une variable angleservo. Quand tu pousses le joystick angleservo=angleservo+1 par exemple, et quand tu relâches angleservo ne bouge pas. Tu as des codes sur sparkfun pour repérer les positions up,down, etc. du joystick pour incrémenter/décrémenter angleservo. C'est sur la valeur d'angleservo que tu commandes le servo

Discussions similaires

  1. Besoin d'aide programmation robot
    Par tutur6000 dans le forum Windows
    Réponses: 0
    Dernier message: 06/02/2013, 15h43
  2. Besoin d'aide programmation vraisemblance
    Par fire007 dans le forum R
    Réponses: 3
    Dernier message: 04/07/2011, 13h44
  3. Besoin d'aide "Programmation graphique"
    Par magic-moad dans le forum C++
    Réponses: 3
    Dernier message: 22/11/2009, 15h38
  4. Besoin d'aide - programmation basique
    Par Mr_Trickster dans le forum Langage
    Réponses: 3
    Dernier message: 10/11/2008, 08h41
  5. Réponses: 2
    Dernier message: 13/06/2007, 11h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo