Bonjour,
Je souhaite contrôler 3 servomoteurs FS5115M avec ma carte Arduino Uno.
Je sais, c’est très basique et je bosse sur Arduino depuis déjà quelques temps, mais là, je bloque.
Voici mon code :
#include <Servo.h>
Servo ServoM1;
Servo ServoM2;
Servo ServoM3;
void setup() {
ServoM1.attach(2);
ServoM2.attach(3);
ServoM3.attach(4);
Serial.begin(9600);
}
void loop() {
ServoM1.write(1);
ServoM2.write(1);
ServoM3.write(1);
mvt();
}
void mvt() {
ServoM1.write(1);
delay(1000);
ServoM1.write(60);
delay(1000);
ServoM2.write(1);
delay(1000);
ServoM2.write(60);
delay(1000);
ServoM3.write(1);
delay(1000);
ServoM3.write(60);
delay(1000);
}
Le but de ce code serait que les 3 moteurs fonctionnent l’un après l’autre.
Malheureusement, seul le premier moteur décide de bouger… pas les autres.
Il y a un truc que j’ai loupé ?
Merci de votre aide ! 
Comment tu alimentes en énergie tes servos ? Cela marche avec 2 ou 1 servo ?
Bonjour,
Comme indiqué, il y a 3 servomoteurs FS5115M branchés sur les ports 2, 3 et 4 de la carte arduino.
Et c’est actuellement alimenté par le câble par lequel j’envoie mon code.
Ce qui est étrange, c’est qu’avec ce code, les 3 servomoteurs fonctionnent bien les uns après les autres :
#include <Servo.h>
Servo ServoM1;
Servo ServoM2;
Servo ServoM3;
void setup() {
ServoM1.attach(2);
ServoM2.attach(3);
ServoM3.attach(4);
Serial.begin(9600);
}
void loop() {
for (int position = 1; position <= 60; position++) {
ServoM1.write(position);
delay(15);
}
for (int position = 60; position >= 1; position--) {
ServoM1.write(position);
delay(15);
}
for (int position = 1; position <= 60; position++) {
ServoM2.write(position);
delay(15);
}
for (int position = 60; position >= 1; position--) {
ServoM2.write(position);
delay(15);
}
for (int position = 1; position <= 60; position++) {
ServoM3.write(position);
delay(15);
}
for (int position = 60; position >= 1; position--) {
ServoM3.write(position);
delay(15);
}
}
Je pense donc que le code de mon premier post doit comporter des erreurs… qu’en pensez-vous ?
il faut essayer d’alimenter tes servos avec une alim externe, le port USB du PC n’est pas forcément asser puissant.
De plus tu initialise la liaison série
Serial.begin(9600);
mais tu ne t’en sert pas, c’est dommage ! Fait des
Serial.println("ordre servo n°x vers l'angle y");
régulièrement pour voir la réaction des servo à chaque ordre envoyés.
D’accord, je vais essayer ce weekend ! 
Merci !
Que mon montage soit branché sur ma prise de courant ou sur ma batterie lipo, ça ne change rien.
Voici mon montage :

Ce premier prgm ne fonctionne pas : les moteurs ne s’activent pas.
#include <Servo.h>
Servo ServoM1;
Servo ServoM2;
Servo ServoM3;
void setup() {
ServoM1.attach(2);
ServoM2.attach(3);
ServoM3.attach(4);
Serial.begin(9600);
}
void loop() {
ServoM1.write(1);
ServoM2.write(1);
ServoM3.write(1);
mvt();
}
void mvt() {
ServoM1.write(1);
delay(1000);
ServoM1.write(60);
delay(1000);
ServoM2.write(1);
delay(1000);
ServoM2.write(60);
delay(1000);
ServoM3.write(1);
delay(1000);
ServoM3.write(60);
delay(1000);
}
Celui-ci fonctionne : les moteurs s’activent les uns après les autres
#include <Servo.h>
Servo ServoM1;
Servo ServoM2;
Servo ServoM3;
void setup() {
ServoM1.attach(2);
ServoM2.attach(3);
ServoM3.attach(4);
Serial.begin(9600);
}
void loop() {
for (int position = 1; position <= 60; position++) {
ServoM1.write(position);
delay(15);
}
for (int position = 60; position >= 1; position--) {
ServoM1.write(position);
delay(15);
}
for (int position = 1; position <= 60; position++) {
ServoM2.write(position);
delay(15);
}
for (int position = 60; position >= 1; position--) {
ServoM2.write(position);
delay(15);
}
for (int position = 1; position <= 60; position++) {
ServoM3.write(position);
delay(15);
}
for (int position = 60; position >= 1; position--) {
ServoM3.write(position);
delay(15);
}
}
Et je ne sais pas pourquoi…