voilà je débute avec l'arduino et j'essaye de piloter un servo moteur continu, mais quand je lance le programme ci-dessous :
#include <Servo.h>
Servo myservo;
int pos =0;
void setup()
{
myservo.attach(9);
myservo.writeMicroseconds(1500); // set servo to mid-point
}
void loop() {
for(pos = 120; pos < 180; pos += 1) // boucle qui va de 0 à 180 degrés par pas de 1 degré
{
myservo.write(pos);
Serial.print(pos);
myservo.writeMicroseconds(1500); // pilote le servo pour aller à la position 'pos'
delay(100); // attend 15 ms que le servo atteigne sa nouvelle position
}
}
le servo ne fait que tourner sur lui même ..., et lors de l'execution du programme celui-ci ne m'affiche pas dans la console la position du servo,
Merci Christian, effectivement il manquait bien le serial.print(9600)
je n'ai pas très bien compris l'instruction -> myservo.writeMicroseconds(1500); quelqu'un peut m'en dire plus ?
est-il possible d'arrêter pendant 5 secondes le motor dans la boucle for dans le programme ?
pourquoi le motor tourne lorsque je lance le programme ?
et pourquoi l'instruction myservo.write(pos); dans la boucle for ne s'éxécute pas ...
quelqu'un peut me dire ce que le programme ci dessous est censé faire, car lorsque je l'éxécute le motor ne fait que tourner, en affichant les messages (serial.Print(9600)) en fonction du delay que j'ai fixé ...
sinon j'ai rentrer ce code, en décrémentant l'angle dans la boucle, mais cela ne marche toujours pas...
void loop()
{
for(pos = 180; pos >=0 ; pos -= 1) // boucle qui va de 0 à 180 degrés par pas de 1 degré
{
myservo.write(pos); // pilote le servo pour aller à la position 'pos'
Serial.print(pos,DEC);
delay(1500); // attend 15 ms que le servo atteigne sa nouvelle position
}
}
et je vois bien l'angle se décrémenter lorsque je lance le Moniteur série (180,179,178....)
j'ai un Tower Pro MG995, et je l'ai modifié pour qu'il soit en rotation continue
nathan62:
j'ai un Tower Pro MG995, et je l'ai modifié pour qu'il soit en rotation continue
Pour que le servo se comporte correctement il faut que le potentiomètre de recopie soit positionné au milieu (ou alors mettre un pont de résistances de valeurs égales à la place du potentiomètre).
Si tu envoies une impulsion de 1,5ms, le servo doit être au neutre ce qui correspond à l'arrêt pour un servo à rotation continu.
Si tu envoies une impulsion de 1ms, le servo doit être au maximum dans un sens.
Si tu envoies une impulsion de 2ms, le servo doit être au maximum dans l'autre sens.
Si tu n'obtiens pas ce comportement, c'est peut être que tu as un problème dans ta modification du servo