Alors la carte est alimentée en 9V.
Et les servos sont alimentés avec 4 piles AA 1.5V, avec une diode pour baisser la tension a 5.4V.
J'ai branché mes servos sur les ports 5,6,9,10 de l'arduino.
avec un code simple sans liaison série, les 4 servos tournent. Mais vaec le code de la liason série, ça ne fonctionne pas. Personne n'aurait quelques lignes de code pour moi ?
Voila mon code :
#include <Servo.h>
#define LTSERVOPIN 10
#define RTSERVOPIN 9
#define LBSERVOPIN 6
#define RBSERVOPIN 5
Servo LTServo;
Servo RTServo;
Servo LBServo;
Servo RBServo;
int speed = 100; //sets the speed of the robot (both servos) a percentage between 0 and 100
int ledState;
int MotorState;
void setup()
{
// Initialisation liaison série
Serial.begin(9600);
pinMode(13,OUTPUT); // LED en SORTIE
SetSpeed(speed); // Sélection d'\une vitesse
pinMode(LTSERVOPIN, OUTPUT); // Servo Gauche Haut en SORTIE
pinMode(RTSERVOPIN, OUTPUT); // Servo Droit Haut en SORTIE
pinMode(LBSERVOPIN, OUTPUT); // Servo Gauche Bas en SORTIE
pinMode(RBSERVOPIN, OUTPUT); // Servo Droit Bas en SORTIE
LTServo.attach(LTSERVOPIN); // Attache le Servo Gauche Haut
RTServo.attach(RTSERVOPIN); // Attache le Servo Droit Haut
LBServo.attach(LBSERVOPIN); // Attache le Servo Gauche Bas
RBServo.attach(RBSERVOPIN); // Attache le Servo Droit Bas
GoStop(); // Stop des Servos
}
void loop()
{
// test if a new value has been received
if (Serial.available())
{
// update without any control
char valeur = Serial.read();
if (valeur == 'Z') { // TOUCHE Z
ledState = HIGH;
MotorState = 'Forward';
}
else{
ledState = LOW;
MotorState = 'Stop';
}
digitalWrite(13,ledState);
switch (MotorState) {
case 'Forward':
GoForward();
break;
case 'Stop':
GoStop();
break;
}
}
}
void SetSpeed(int NewSpeed){
if(NewSpeed >= 100) {NewSpeed = 100;} // Si la vitesse > 100 alors on lui attribue 100
if(NewSpeed <= 0) {NewSpeed = 0;} // Si la vitesse < 0 alors on lui attribue 0
speed = NewSpeed * 0.9; // Dimensionne la vitesse entre 0 et 100
}
/*
* Fait avancer le robot
*/
void GoForward(){
LTServo.write(180);
RTServo.write(180);
LBServo.write(180);
RBServo.write(180);
}
/*
* Fait reculer le robot
*/
void GoBackward(){
LTServo.write(90 - speed);
RTServo.write(90 + speed);
LBServo.write(90 - speed);
RBServo.write(90 + speed);
}
/*
* Fait pivoter à droite le robot
*/
void GoRight(){
LTServo.write(90 + speed);
RTServo.write(90 + speed);
LBServo.write(90 + speed);
RBServo.write(90 + speed);
}
/*
* Fait pivoter à gauche le robot
*/
void GoLeft(){
LTServo.write(90 - speed);
RTServo.write(90 - speed);
LBServo.write(90 - speed);
RBServo.write(90 - speed);
}
/*
* Stop le robot
*/
void GoStop(){
LTServo.write(90);
RTServo.write(90);
LBServo.write(90);
RBServo.write(90);
}