Ma voiture ne tourne pas

Bonjour tout le monde!

Donc j'ai un problème avec ma voiture. Elle avance bien et s'arrete bien. Cependant, quand un vehicule en avant tourne, ma voiture donc sarreter. Cependant, quand ca arrive,rien ne se passe.

J'ai des capteurs, un Ping et un MaxSonar Ez2.Ils sont placés sur les deux cotés de la voiture. Un à chaque. Donc dans mon programme, jai dit que si par exemple le MaxSonar détecte quelque chose entre 0 et 50 cm et que le Ping ne détecte rien, ma voiture doit tourner à droite. Cependant,rien ne se passe.

J'ai posé un objet à cette position mais rien ne se passe.

Sonar: http://imgur.com/SIUsiFW
Ping: Imgur: The magic of the Internet

et mon code:

      if(cm<50 and valeurPing>50)
{  

    
    myservo.write(0); 
    delay(500);
    myservo.write(70);   
delay(500);
digitalWrite(motor,HIGH);
delay(150);
digitalWrite(motor,LOW);
delay(300); 

}

cm= Sonar et ValeurPing = Ping

si les deux capteurs ne captent rien avant 50 cm, elle roule et si ils captent, alors il n'y a pas de probleme ici. Aussi,le servo marche bien car j'ai testé l'exemple sweep et ca marche.

Qu'esce-qui ne marche pas? Merci.

Le code complet:

const int pingPin = 7;
int moteur= 3;
#include <Servo.h> 
int rouge = 6;
int vert = 5;
int bleu= 4;
Servo myservo;
int pos = 0;
float Inch=0.00;
float cm=0.00;
int SonarPin=A1;
int  sensorValue;





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

pinMode(moteur, OUTPUT);
pinMode(rouge, OUTPUT);
pinMode(vert,OUTPUT);
pinMode(bleu,OUTPUT);
myservo.attach(9);


}

long int acquisitionPing(void){
    long int duration;

    pinMode(pingPin, OUTPUT);
    digitalWrite(pingPin, LOW);
    delayMicroseconds(2);
    digitalWrite(pingPin, HIGH);
    delayMicroseconds(5);
    digitalWrite(pingPin, LOW);
    pinMode(pingPin, INPUT);
    duration = pulseIn(pingPin, HIGH);
    return duration / 29 / 2;
}

long int acquisitionMaxSonar(void){
  sensorValue=analogRead(SonarPin);
delay(50);
Inch= (sensorValue*0.497);
cm=Inch*2.54;
  }  



void loop()
{
  
   long int valeurPing;
   long int valeurSonar;
    // on fait l'acquisition des senseurs
   valeurPing = acquisitionPing();
   valeurSonar = acquisitionMaxSonar();
  // on traite les informations recueillies
  // par exemple
  
Serial.print(cm);
Serial.println('cm');
delay(500);
  
  
  if (valeurPing>50 and cm > 50)
{
digitalWrite(rouge,HIGH);
delay(500);
digitalWrite(rouge,LOW);
delay(500);  
digitalWrite(vert,HIGH);
delay(500);
digitalWrite(vert,LOW);
delay(500); 
digitalWrite(bleu,HIGH);
delay(500);
digitalWrite(bleu,LOW);
delay(500);
    myservo.write(70);     
digitalWrite(moteur,HIGH);
delay(150);
digitalWrite(moteur,LOW);
delay(300);

  } 

if (valeurPing < 50 and cm <50 )
{
  
      myservo.write(70);   
    analogWrite(moteur,0);
  delay(500);
  digitalWrite(rouge,HIGH);
  delay(500); 
 }
   
  if(cm>50 and valeurPing<50)
  
    { 
  
    myservo.write(179); 
    delay(500);
    myservo.write(70);   
delay(500);
digitalWrite(moteur,HIGH);
delay(150);
digitalWrite(moteur,LOW);
delay(300); 

 digitalWrite(vert,HIGH);
 delay(500);
 digitalWrite(vert,LOW);
delay(500); }
  
  if(cm<50 and valeurPing>50)
{  

 myservo.write(0); 
    delay(500);
    myservo.write(70);   
delay(500);
digitalWrite(moteur,HIGH);
delay(150);
digitalWrite(moteur,LOW);
delay(300); 
 
  digitalWrite(bleu,HIGH);
  delay(500);
  digitalWrite(bleu,LOW);
  delay(500); 
   } 

}

pro3000:
Cependant, quand un vehicule en avant tourne, ma voiture donc sarreter. Cependant, quand ca arrive,rien ne se passe.

J'ai pas compris, tu peux reformuler?

Qu'est ce-qui ne marche pas? Merci.

Ce serait plutot à toi de nous dire ce qui ne marche pas par rapport à ce que tu attends, comme ça ça permettra de trouver une solution

:wink:

bonjour,
+1 c'est incompréhensible ce que tu écrit.

déjà je dirais qu'il te manque un return pour ton "cm"