Commande moteur avec joystick sur arduino.

Bonjour je suis un élève de terminal. J’utilise la carte arduino uno pour mon projet de bac, une partie du projet es de commander un moteur a CC avec un joystick branché sur le port analog 2 et 3 (2 potentiometres). Le but est de faire tourner le moteur dans les deux sens, nous avons donc utilisé un pont en H. Mais, la est le problème, comment commander le moteur via le joystick en passant par le pont en h ? J’ai déja trouvé un programme pas mal … mais il est pas complet, pouvez vous m’aidez ?

/*
Programme pour utilisation Joystick
Celui-ci permet de définir la zone en fonction de la position du Joystick
*/

int port_v = A2; // joystick mouvement vertical
int port_h = A3; // joystick mouvement horizontal
int valeur_v = 0;
int valeur_h = 0;
int zone = 0;
int motor1Pin1 = 3; // pin 2 (Input 1) du L293D
int motor1Pin2 = 4; // pin 7 (Input 2) du L293D
int enablePin = 9; // pin 1 (Enable 1) du L293D

void setup()
{
Serial.begin(9600);
}

void calcul_zone(int x, int y)
{
if (x <= 513) {digitalWrite(enablePin, HIGH);}
{
if (y <= 501){zone = 2;} //avance et droite
if (y >= 503){zone = 4;} //recule et droite
if ((y >501)&&(y<503)){zone=3;}//droite toute
}
if (x >= 515)//gauche
{
if (y <= 501){zone = 8;} //avance et gauche
if (y >= 503){zone = 6;} // recule et gauche
if ((y >501)&&(y<503)){zone=7;} //gauche toute
}
if (( x>513 ) && ( x < 515)) //aucune direction
{
if (y <=501) {zone=1;} //avance
if (y >=503) {zone=5;} //recule
if ((y >501)&&(y<503)){zone=0;} // stop
}
}
void loop()
{
// Lit l’entrée analogique A0
valeur_v = analogRead(port_v);
// lit l’entrée analogique A1
valeur_h = analogRead(port_h);
calcul_zone(valeur_h, valeur_v);
switch (zone)
{
case 0:
Serial.println(“Kart stop”);
// Mettre la broche Enable a high comme ca le moteur tourne
digitalWrite(enablePin, LOW);
digitalWrite(motor1Pin1, LOW); // mettre pin 2 a 293D low
digitalWrite(motor1Pin2, LOW); // mettre pin 7 a L293D high
break;
case 1:
Serial.println(“Kart avance”);
break;
case 2:
Serial.println(“Kart avance et tourne a droite”);
break;
case 3:
Serial.println(“Kart tourne a droite toute”);
// Mettre la broche Enable a high comme ca le moteur tourne
digitalWrite(enablePin, HIGH);
digitalWrite(motor1Pin1, LOW); // mettre pin 2 a 293D low
digitalWrite(motor1Pin2, HIGH); // mettre pin 7 a L293D high
break;
case 4:
Serial.println(“Kart recule et tourne a droite”);
break;
case 5:
Serial.println(“Kart recule”);
break;
case 6:
Serial.println(“Kart recule et tourne a gauche”);
break;
case 7:
Serial.println(“Kart tourne a gauche toute”);
// Mettre la broche Enable a high comme ca le moteur tourne
digitalWrite(enablePin, HIGH);
digitalWrite(motor1Pin1, HIGH); // mettre pin 2 a 293D low
digitalWrite(motor1Pin2, LOW); // mettre pin 7 a L293D high
break;
case 8:
Serial.println(“Kart avance et tourne a gauche”);
break;
}
delay(500);
}