I don't see that posting another post is impolite behavior!! and i think that nobody will mind ! Anyway, as I say I solved the problem by myself and I decide to share my new code for other people that may have my same problem
#include <NewPing.h>
// capteur ultrasonic
#define trigPin 24 // Pin Trigger branchée sur la broche 12 de l'arduino
#define echoPin 25 // Pin Echo branchée sur la broche 11 de l'arduino
NewPing sonar(trigPin, echoPin);
int maximumDistance = 50; // distance Maximale acceptée (de 0-450 cm)
int minimumDistance = 0; // distance Minimale acceptée (en cm)
int cm = 0; //declare une variable cm qui je l'utilise dans la comparaison
boolean PasObstacle;
const int distanceObstacle =10; // Distance de détection d'un obstable : ici 10 cm
int distance = 0;
//Define Pins
int button1 = 22; //vert
int button = 23; //rouge
int z=0;
int w=0;
int ENA = 3; //Enable Pin of the Right Motor (must be PWM)
int IN1 = 7; //Control Pin
int IN2 = 2;
int ENB = 6; //Enable Pin of the Left Motor (must be PWM)
int IN3 = 4;
int IN4 = 5;
//Speed of the Motors
#define ENASpeed 250
#define ENBSpeed 250
int Sensor1 = 0;
int Sensor2 = 0;
int Sensor3 = 0;
int Sensor4 = 0;
void setup() {
Serial.begin(9600);
pinMode(ENA, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(Sensor1, INPUT);
pinMode(Sensor2, INPUT);
pinMode(Sensor3, INPUT);
pinMode(Sensor4, INPUT);
pinMode(button, INPUT);
pinMode(button1, INPUT);
}
void loop() {
//Use analogWrite to run motor at adjusted speed
analogWrite(ENA, ENASpeed);
analogWrite(ENB, ENBSpeed);
//Read the Sensor if HIGH (BLACK Line) or LOW (WHITE Line)
Sensor1 = digitalRead(10);
Sensor2 = digitalRead(11);
Sensor3 = digitalRead(12);
Sensor4 = digitalRead(13);
z = digitalRead(22);
w = digitalRead(23);
//Set conditions for FORWARD, LEFT and RIGHT
distance = mesureDistance(); // on lit la valeur en cm
if (PasObstacle) {
if (Sensor4 == HIGH && Sensor3 == LOW && Sensor2 == LOW && Sensor1 == LOW)
{
//Turn LEFT
//motor A Backward
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
//motor B Forward
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
else if (Sensor4 == LOW && Sensor3 == LOW && Sensor2 == LOW && Sensor1 == HIGH)
{
//Turn RIGHT
//motor A Forward
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
//motor B Backward
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
else if (Sensor4 == HIGH && Sensor3 == HIGH && Sensor2 == HIGH && Sensor1 == HIGH)
{
if (w == 1)
{
//Turn RIGHT
//motor A Forward
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
//motor B Backward
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
delay(500);
}
else if (z == 1)
{
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
delay(500);
}
else {
// stop
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
}
else if (Sensor4 == LOW && Sensor3 == LOW && Sensor2 == LOW && Sensor1 == LOW)
{
// backward
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
else
{
//FORWARD
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
}
else {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
}
unsigned int mesureDistance() { // fonctin pour comparer la distance calculé avec la distanceobstacle
int cm = sonar.ping_cm();
if (cm > distanceObstacle || cm <= minimumDistance) {
PasObstacle = true; // on renvoie true s'il n'y pas d'obstacle
}
else {
PasObstacle = false; // on renvoie false s'il y a un obstacle
}
return cm; // retourne la distance du capteur en cm
}