Go Down

Topic: Xbee avec servomoteurs (Read 1 time) previous topic - next topic

Lolo

Bonjour,
je possède un shield Xbee et deux modules v1.
En mettant sur l'arduino un code qui éclaire la led (pin 13) lorsque le SERIE reçoit H et l'éteint lorsuq'il recoit autre chose.
Quand j'envoi H, cela fonctionne, la led s'éclaire sans fil via le XBEE.
Le problème, c'est lorsque je remplace ma LED par un servomoteur ! Ou, simplement, que je fait allumer la LED et que j'active un moteur sur le pin 5 : la led clignote et le moteur saccade.  :-/
Comment y remédier ?
merci, @+

anthology

as tu penser a alimenté en externe ton servo ??
car l'arduino a peut etre pas assez de puissance

Lolo

Euh, l'arduino est alimentée avec une pile 9V, et mes servos sont connectés sur la sortie "+5V" de l'arduino.
Je doit utiliser une alimentation externe pour mes servos ?

Jean-François

Euh... un servo ça fonctionne pas comme un bête moteur DC, le + et le - sont toujours branchés (le + sous 5V et le - sur le gnd), le fil de signal reçois les signaux PWM (les positions / couleurs des fils changent suivant la marque du servo) :




Et ici une très bonne page explicative :

http://www.pobot.org/Bouge-ton-servo.html

;)
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Lolo

Oui, c'est de  ça que je parlais, et il est branché correctement !
De plus, en passant par le cable, et avec le meme code, je n'ai pas de problème ! Il y a donc problème avec la liaison xbee  :-/

Jean-François

#5
Jan 26, 2010, 06:59 am Last Edit: Jan 26, 2010, 07:00 am by jfs Reason: 1
Tu as essayé ton programme de commande en direct, sans passer par le Xbee ?

Montre également le code que tu utilises.
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Lolo

En utilisant la liaison série, mais avec un cable USB connecté a l'arduino, ça fonctionne nickel ;), mais ne xbee sa ne fonctionne pas
Voila le code qui est sur l'arduino :
Code: [Select]


#define ServoLBPin 3
//  Servos
int RefreshTime  = 20;
int MinPulse     = 0;
int MaxPulse     = 180;
int TurnRate     = 10;
long LastPulseLT = 0;
long LastPulseLB = 0;
long LastPulseRT = 0;
long LastPulseRB = 0;
int CenterPosition = 90;
int PulseWidth;
int Sens;
int Valeur;
int ledState;
void setup()
{
   PulseWidth = 90;
 // Initialisation liaison s[ch65533]rie
 Serial.begin(19200);
 pinMode(ServoLBPin, OUTPUT);  // Pin du servo en SORTIE
 pinMode(13,OUTPUT);
}

// Servo Gauche Bas
void ActiveServoLB(int PulseWidthLB){
 if(millis()-LastPulseLB >= RefreshTime){
   digitalWrite(ServoLBPin, HIGH);
   delayMicroseconds(PulseWidthLB);
   digitalWrite(ServoLBPin, LOW);
   LastPulseLB=millis();
 }
}

void loop()
{

 // test if a new value has been received
 if (Serial.available())
 {
   // update without any control
   int valeur = Serial.read();  


   if (valeur == 'Z') {  //  TOUCHE Z
     ledState = HIGH;
   PulseWidth += TurnRate;
   ActiveServoLB(PulseWidth);
   }
   else{
     ledState = LOW;
   }
   digitalWrite(13,ledState);
 }


}


Je précise que pour faire mes tests, j'ai mis ce code dans un nouveau fichier, afin de tester les différentes fonctionalitées séparément
merci

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy