Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1627 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  [Arduino] Probleme de code pour controler 2 servomoteurs

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Arduino] Probleme de code pour controler 2 servomoteurs

n°2257610
spooky12
Posté le 07-05-2015 à 15:30:31  profilanswer
 

Bonjour,
 
Je travaille actuellement sur le contrôle de la position d'une webcam grâce à deux servomoteurs depuis un site web, pour se faire j'utilise une carte Arduino Uno qui contrôle les servomoteurs grâce à des informations reçu dans le port Serie envoyé par Processing.
 
Le problème c'est que quand la position des servomoteurs sont envoyé et qu'ils se mettent à la bonne position, de temps en temps un des servomoteur, retourne à 0 avant de reprendre sa position. (Je n'ai pas ce problème quand j'envoi manuellement la position des servomoteurs dans le port Serie)
 
Avez-vous une idée pour remédier à ce problème ? Merci d'avance pour votre aide.
 
 
Les valeurs envoyé dans le port Serie sont du style xx120yy80
 
Mon code :

Code :
  1. #include <Servo.h> // librairie pour servomoteur
  2. const int BservoX = 3; //déclaration constante des broches des servo
  3. const int BservoY = 6;
  4. int ReceptionOctet=0; // variable de stockage des octets reçus par port série
  5. Servo servoX, servoY;  // creation des objets servo pour les controler
  6. char XouY = 0; //variable permettant de mettre la valeur du servo dans le bon servo
  7.                // si XouY=1 alors ça va dans valeurX si XouY=2 ça va dans valeurY
  8. int valeurX = 105, valeurY = 105; //variable definissant la position de chaques servo
  9. void setup()
  10. {
  11.   servoX.attach(BservoX);  // attaches the servo on pin 3 to the servo object  
  12.   servoY.attach(BservoY);  // attaches the servo on pin 7 to the servo object
  13.  
  14.   Serial.begin(9600); // initialise connexion série à 9600 bauds
  15.  
  16.   pinMode(BservoX, OUTPUT); //met la broche en sortie
  17.   pinMode(BservoY, OUTPUT); //met la broche en sortie
  18.  
  19.   servoX.write(valeurX); //mets le sevoX à la position angulaire égale à valeurX
  20.   servoY.write(valeurY); //mets le sevoY à la position angulaire égale à valeurY
  21.  
  22. }
  23. void loop()
  24. {
  25.   if (Serial.available()>0) // si caractère dans la file d'attente
  26.   {
  27.     while (Serial.available()>0) // tant que buffer pas vide pour lire d'une traite tous les caractères reçus
  28.     {
  29.       ReceptionOctet= Serial.read(); // renvoie le 1er octet présent dans la file attente série (-1 si aucun)  
  30.       ReceptionOctet=ReceptionOctet-48; // transfo valeur ASCII en valeur décimale
  31.      
  32.       if (ReceptionOctet==73)
  33.         {
  34.           XouY = 2;
  35.           valeurY = 0 ;
  36.          }
  37.       else if (ReceptionOctet==72)
  38.         {
  39.           XouY = 1;
  40.           valeurX = 0;
  41.          }
  42.      
  43.        else if ((ReceptionOctet>=0)&&(ReceptionOctet<=9))
  44.        {
  45.         if(XouY == 1) valeurX = (valeurX*10)+ReceptionOctet;
  46.         else if(XouY == 2) valeurY = (valeurY*10)+ReceptionOctet;
  47.         }
  48.        delay(1); // pause pour laisser le temps au Serial.available de recevoir les caractères
  49.      } // fin while
  50.    
  51.      XouY = 0;
  52.    
  53.      if (valeurX>=180) valeurX=180;
  54.      if (valeurX<=30) valeurX = 30;
  55.      if (valeurY>=180) valeurY=180;
  56.      if (valeurY<=30) valeurY = 30;
  57.      servoX.write(valeurX); //mets le sevoX à la position angulaire égale à valeurX
  58.      servoY.write(valeurY); //mets le sevoY à la position angulaire égale à valeurY
  59.      delay (1000); //entre chaque changement de position
  60.     }
  61.      
  62. }

mood
Publicité
Posté le 07-05-2015 à 15:30:31  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  [Arduino] Probleme de code pour controler 2 servomoteurs

 

Sujets relatifs
Ada Calendar.Formatting.Image : problème : solvé.Petit Qcm et petit problème
[Arduino] Programme accéléromètre analogiqueProblème Eclipse Metrics Java
comment migrer un code[résolu] Problème de récupération d'une valeur en BDD
Problème de macro et d'importation d'un fichier WordProblème script enregistrement / tranfert
Alternative à Code IgnitorProblème de non-compilation
Plus de sujets relatifs à : [Arduino] Probleme de code pour controler 2 servomoteurs


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR