en faite j'ai un problème c'est que ce programme ne marche pas bien (les moteurs tournent à des vitesses inapproprié ):
const int trigPin_droit = A3; // Trigger (emission)
const int echoPin_droit = A4; // Echo (réception)
const int trigPin_gauche = 5; // Trigger (emission)
const int echoPin_gauche = 6; // Echo (réception)
const int motor_gauchePin2 = 2; // pin 2 du L293D
const int motor_gauchePin4 = 4; // pin 4 du L293D
const int enable_gauchePin10 = 10; // pin (Enable)du L293D
const int motor_droitPin3= 3; // pin 3 du L293D
const int motor_droitPin8 = 8; // pin 1 du L293D
const int enable_droitPin11 = 11; // pin (Enable)du L293D
// Variables
long duree_droit; // durée de l'echo
int distance_droit; // distance
long duree_gauche; // durée de l'echo
int distance_gauche; // distance
//int pot=0;
//int motor_slow=50;
int motorSpeed= 255;
int Tout_droit(){
analogWrite(enable_gauchePin10, motorSpeed);
analogWrite(enable_droitPin11, motorSpeed);
digitalWrite(motor_gauchePin2, HIGH);
digitalWrite(motor_gauchePin4, LOW) ;
digitalWrite(motor_droitPin3, LOW);
digitalWrite(motor_droitPin8, HIGH);
}
int Tourne_droite(){
analogWrite(enable_droitPin11, motorSpeed);
analogWrite(enable_gauchePin10, //motor_slow);
digitalWrite(motor_gauchePin2, HIGH);
digitalWrite(motor_gauchePin4, LOW) ;
digitalWrite(motor_droitPin3, LOW);
digitalWrite(motor_droitPin8, HIGH);
}
int Tourne_gauche(){
analogWrite(enable_droitPin11, motor_slow);
analogWrite(enable_gauchePin10, //motorSpeed);
digitalWrite(motor_gauchePin2, HIGH);
digitalWrite(motor_gauchePin4, LOW) ;
digitalWrite(motor_droitPin3, LOW);
digitalWrite(motor_droitPin8, HIGH);
}
int arret(){
analogWrite(enable_droitPin11, 0);
analogWrite(enable_gauchePin10,0);
digitalWrite(motor_gauchePin2, LOW);
digitalWrite(motor_gauchePin4, LOW) ;
digitalWrite(motor_droitPin3, LOW);
digitalWrite(motor_droitPin8, LOW);
}
void setup() {
pinMode(trigPin_droit, OUTPUT); // Configuration du port du Trigger comme une SORTIE
pinMode(echoPin_droit, INPUT);// Configuration du port de l'Echo comme une ENTREE
pinMode(trigPin_gauche, OUTPUT); // Configuration du port du Trigger comme une SORTIE
pinMode(echoPin_gauche, INPUT); // Configuration du port de l'Echo comme une ENTREE
digitalWrite(trigPin_droit, LOW);
digitalWrite(trigPin_gauche, LOW);
Serial.begin(9600); // Démarrage de la communication série
pinMode(motor_gauchePin2, OUTPUT);
pinMode(motor_gauchePin4, OUTPUT) ;
pinMode(enable_gauchePin10, OUTPUT);
pinMode(motor_droitPin3, OUTPUT);
pinMode(motor_droitPin8, OUTPUT);
pinMode(enable_droitPin11, OUTPUT);
}
void loop() {
//int motorSpeed= analogRead(pot)/4;
//Serial.print(motorSpeed);
//if (motorSpeed== motor_slow){
//motor_slow=motor_slow-10;
// }
digitalWrite(trigPin_droit, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin_droit, LOW);
duree_droit = pulseIn(echoPin_droit, HIGH);
distance_droit = duree_droit/58;// Calcul de la distance
// Affichage de la distance dans le Moniteur Série
Serial.print("Distance_droit : ");
Serial.print(distance_droit);
Serial.println("cm");
delay(60);
digitalWrite(trigPin_gauche, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin_gauche, LOW);
duree_gauche = pulseIn(echoPin_gauche, HIGH);
distance_gauche = duree_gauche/58;// Calcul de la distance
// Affichage de la distance dans le Moniteur Série
Serial.print("Distance_gauche : ");
Serial.print(distance_gauche);
Serial.println("cm");
Tout_droit();//marche avant
if (distance_droit<7)//tourne à gauche si "distance_gauche" est inférieur à 7cm
{
Tourne_gauche();
}
if (distance_gauche<7)//tourne à droite si "distance_droit" est inférieur à 7cm
{
Tourne_droite();
}
if ((distance_gauche<7) && (distance_droit<7))//arrêt des moteurs si "distance_gauche" et "distance_droit" est inférieur à 7cm
{
arret();
}
}