Moteur qui fonctionnent mal dans L293D

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();
 }
}

Normalement cela ne peut pas se compiler.

Pour avoir plus de réponses, ce serait bien de donner plus d'explications: quels sont les moteurs, comment cela est alimenté, Quelle sont les cartes employée? Que doit faire les moteurs? que font-ils en fait? Les moteurs tournent-ils normalement avec un programme de test?....

C'est en faite quand j'active la fonction Tout_droit();//marche avant tout est normal c'est-à dire que les moteurs tournent à vitesse constante mais quand j'active la fonction arret() les moteurs ne s'arrêtent pas (ils oscillent entre 0 et 15 rpm) et les fonctions Tourne_droite(); etTourne_gauche(); ne fonctionnent pas. ET TOUS EST FAIT SUR ARDUINO LES MOTEURS SONT DES MOTEURS DC il sont piloté par un l293d qui EST rélié à une pile 9v et est relié au 5v de l'arduino

en faite tout marche mais les valeurs de sont pas fixe et l'arrêt oscille entre 10 et15 rpm

J'AI TOUJOURS LE MeME PROBLeme mais ton programme a marché

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

 

const int bouton_on = 7;     // Numéro de la broche à laquelle est connecté le bouton poussoir

int etatBouton_on = 0;

const int bouton_off = 9;     // Numéro de la broche à laquelle est connecté le bouton poussoir

int etatBouton_off = 0;

 

int LED=13;

 

// 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 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, 50); 

 

 digitalWrite(motor_droitPin3, LOW);   

 digitalWrite(motor_droitPin8, HIGH); 

 

 digitalWrite(motor_gauchePin2, HIGH);    

 digitalWrite(motor_gauchePin4, LOW);

}

 

int Tourne_gauche(){

  

 analogWrite(enable_droitPin11, 50);

 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(LED, OUTPUT); // Configuration du port 13

 

 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(){

 

 // Envoie d'une slave ultrasonor pendant 10 μs

 

 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");

  

 // lit l'état du bouton et stocke le résultat dans  etatBouton_off et  etatBouton_on

 etatBouton_on = digitalRead(bouton_on);

 etatBouton_off = digitalRead(bouton_off);

 

// Si etatBouton est à 5V (HIGH) c'est que le bouton est appuyé

//if(etatBouton_on == HIGH){ 

   

 //digitalWrite(LED, HIGH);// ON

 

 Tout_droit();

 

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();
}

Unfortunately "trick" only works not, and I can no longer rotate the motor . How to check what that was could be damaged? The shield is poorly designed and does not have a surface of in arduino kits) replace and test with a motor voltage that does not exceed 10V.

j'ai réussi a régler le problème

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.