[Arduino] Probleme de code pour controler 2 servomoteurs
Probleme de code pour controler 2 servomoteurs [Arduino] - Divers - Programmation
MarshPosté le 07-05-2015 à 15:30:31
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 :
#include <Servo.h> // librairie pour servomoteur
constint BservoX = 3; //déclaration constante des broches des servo
constint BservoY = 6;
int ReceptionOctet=0; // variable de stockage des octets reçus par port série
Servo servoX, servoY; // creation des objets servo pour les controler
char XouY = 0; //variable permettant de mettre la valeur du servo dans le bon servo
// si XouY=1 alors ça va dans valeurX si XouY=2 ça va dans valeurY
int valeurX = 105, valeurY = 105; //variable definissant la position de chaques servo
void setup()
{
servoX.attach(BservoX); // attaches the servo on pin 3 to the servo object
servoY.attach(BservoY); // attaches the servo on pin 7 to the servo object
Serial.begin(9600); // initialise connexion série à 9600 bauds
pinMode(BservoX, OUTPUT); //met la broche en sortie
pinMode(BservoY, OUTPUT); //met la broche en sortie
servoX.write(valeurX); //mets le sevoX à la position angulaire égale à valeurX
servoY.write(valeurY); //mets le sevoY à la position angulaire égale à valeurY
}
void loop()
{
if (Serial.available()>0) // si caractère dans la file d'attente
{
while (Serial.available()>0) // tant que buffer pas vide pour lire d'une traite tous les caractères reçus
{
ReceptionOctet= Serial.read(); // renvoie le 1er octet présent dans la file attente série (-1 si aucun)
ReceptionOctet=ReceptionOctet-48; // transfo valeur ASCII en valeur décimale
Marsh Posté le 07-05-2015 à 15:30:31
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 :