J'essaye de faire fonctionner un ensemble de 2 servos + 1 led + 1 bouton.
L'idée étant qu'en appuyant sur un bouton, ça éteint/allume une LED et fait fonctionner les deux servos en sens inverse.
Cependant, ça ne fonctionne pas. J'ai 1 servo TowerPro SG92R et 3 servos digitaux EMAX ES08D. Quand je lance le code avec le towerpro et 1 emax, le towerpro fonctionne sans soucis mais l'emax ne bouge pas d'un degré. Quand je branche 2 emax, soit l'un buzz et l'autre ne fait rien, soit aucun des deux ne réagit (en dehors du mouvement de l'un lors du branchement en USB).
Je vous joins deux images du montage ainsi que le code. Ais-je branché quelque chose au mauvais endroit? Y'a-t-il un problème dans le code? Dois-je acheter des servos analogiques?
J'ai essayé chaque servo à l'aide de sweep, ils fonctionnent. J'ai modifié sweep pour faire un balayage sur 2 servos simultanéement, ça fonctionne également. Je suis donc perplexe.
Un grand merci d'avance pour l'aide que vous pourriez m'apporter
#include <Servo.h>
Servo myservo; // create servo object to control a servo
Servo myservo1;
const int buttonPin = 2; // the pin that the pushbutton is attached to
const int ledPin = 5; // the pin that the LED is attached to
int buttonState = 0; // current state of the button
int lastButtonState = 0; // previous state of the button
int ledState = 0; // remember current led state
int pos = 0; // variable to store the servo positions
int pos1 = 180;
void setup()
{
myservo.attach(9); // attaches the servo on pin 9 to the servo object
myservo1.attach(10); // attaches the servo on pin 10 to the servo object
pinMode(buttonPin, INPUT); // initialize the button pin as a input
pinMode(ledPin, OUTPUT); // initialize the button pin as a output
}
void loop()
{
buttonState = digitalRead(buttonPin); // read the pushbutton input pin
if (buttonState != lastButtonState) // compare buttonState to previous state
{
if (buttonState == 1)
{
if(ledState == 1)
{
delay(30); ledState = 0;
for(pos = 0; pos <= 180; pos += 10) // goes from 0 degrees to 180 degrees
{ // in steps of 10 degrees
myservo.write(pos); // tell servo to go to position 'pos'
}
for(pos1 = 180; pos1 >= 0; pos1 -= 10) // goes from 180 degrees to 0 degrees
{ // in steps of 10 degrees
myservo1.write(pos1); // tell servo to go to position 'pos1'
}
delay(15); // waits 15ms for the servo to reach the position
}
else
{
delay(30); ledState = 1;
for(pos = 180; pos >= 0; pos -= 10) // goes from 180 degrees to 0 degrees
{
myservo.write(pos); // tell servo to go to position 'pos'
}
for(pos1 = 0; pos1 <= 180; pos1 += 10) // goes from 0 degrees to 180 degrees
{
myservo1.write(pos1); // tell servo to go to position 'pos1'
}
delay(1000);
}
}
lastButtonState = buttonState; // remember the current state of the button
}
// turns LED on if the ledState =1 or off if ledState = 0
digitalWrite(ledPin, ledState);
myservo.write(pos); // goes from 0 degrees to 180 degrees
myservo1.write(pos1); // goes from 180 degrees to 0 degrees
delay(20);
}