Go Down

Topic: servo synchro (Read 1 time) previous topic - next topic

cowenbiz

Jan 07, 2012, 10:37 pm Last Edit: Jan 07, 2012, 10:42 pm by cowenbiz Reason: 1
slt tlm,
mon projet d'hexapode (duemilanove)(ssc32 bientot).
Maintenant la phase de construction terminé, je commence à controler une pate mais seulement servo après servo donc le mouvement devient très approximatif, quelque moyen puis je utilisé pour que les servos effectuent les taches en même temps et avec un controle de leurs vitesse individuellement . merci

les photo arrive....

#include <Servo.h>
Servo p63, p62, p61; 
int pos=0;

void setup()
{ p63.attach(6), p62.attach(5), p61.attach(3);}
void loop()
{
for(pos=70; pos<=110; pos++)
     { p62.write(pos); delay(20);}
     for(pos=90; pos>=60; pos--)
         { p61.write(pos);}
        for(pos=60; pos<=140; pos++)
           { p63.write(pos); delay(10);}
          for(pos=110; pos>=70; pos--)
               { p62.write(pos); delay(5);}
            for(pos=60; pos<=90; pos++)
                 { p61.write(pos);}
               for(pos=140; pos>=60; pos--)
                   { p63.write(pos); delay(10);}
}

Super_Cinci

#1
Jan 08, 2012, 04:50 am Last Edit: Jan 08, 2012, 04:52 am by Super_Cinci Reason: 1
je vais encore me répéter...

dans l'idée, ton code devrait marcher, mais voilà, la lib servo est vraiment mal faite, et surtout incompatible avec l'utilisation de trop de servos. En fait, elle déclenche une interruption timer toutes les x µs, et pendant qu'elle traite son int, elle désactive les autres, donc certains servos ne reçoivent pas la bonne info en temps et en heure...

J'ai résolu le pb en passant directement par les timers en mode PWM (sans utiliser analogWrite(), je les programme via leurs registres), mais avec ta carte, tu es limité à 4 servos... avec la 2560, on peut en avoir plus (une bonne 10aine je crois, ça dépend des sorties OCRXn câblées).

j'ai rien d'autre à te proposer...

ah si : EDIT : http://arduino.cc/forum/index.php/topic,86084.0.html , Vincent a le même problème que toi...

cowenbiz

slt merci pour ta reponse,
mais il y bien un moyen pour commander 18 servo symultanément avec une carte arduino plus un module ssc32 ou sd21?
enfin comment trouver des info ou tutoriel sur les mouvement des servo par les registre? de plus j'ai trouver sur le net un monvement de trois servo en symultanéé avec la fonction millis() mais bon j'ai pas d'info sur ce style de scypte et peu d'info sur la ise en oeuvre de millis().

Go Up