ultrasonic sensor and line follower robot

#include <NewPing.h>
// capteur ultrasonic
#define trigPin   12  //  Pin Trigger branchée sur la broche 12 de l'arduino
#define echoPin   11  //  Pin Echo branchée sur la broche 11 de l'arduino
NewPing sonar(trigPin, echoPin);
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;
//définition des bouttons
int button1 = 20; //vert
int button = 21; //rouge
int z;
int w;
// définition des capteur ultrason
int cap1 = 3; // cap gauche
int cap2 = 4; // cap milieu
int cap3 = 5; // cap milieu
int cap4 = 6; // cap droite
// definition de boche de la carte de puissance
int varmot2 = 9;
int av2 = 7;     //avant
int ar2 = 8;     //arrière
int varmot1 = 14;
int av1 = 15;     //avant
int ar1 = 16;
boolean a;
boolean b;//les deux capteurs au milieu
boolean c;//les deux capteurs au milieu
boolean d;
boolean stope;// j'ecrit stope à la fin "e" car tt simplement lorque j'ecrit stop elle devient en rouge don je pense que c'est une fonction prédifine.
boolean left;
boolean right;
boolean forward;
boolean backward;
void setup() {
  pinMode(varmot1, OUTPUT);
  pinMode(av1, OUTPUT);
  pinMode(ar1, OUTPUT);
  pinMode(varmot2, OUTPUT);
  pinMode(av2, OUTPUT);
  pinMode(ar2, OUTPUT);
  Serial.begin(9600);
  pinMode(button, INPUT);
  pinMode(button1, INPUT);

}

void loop() {
  a = digitalRead(cap1) ; // a recoi la valeur de cap1 (1 ou 0)
  b = digitalRead(cap2) ;// b recoi la valeur de cap2 (1 ou 0)
  c = digitalRead(cap3) ;// c recoi la valeur de cap3  (1 ou 0)
  d = digitalRead(cap4) ;// d recoi la valeur de cap4 (1 ou 0)
  right = (((!a) && (d)) && (c || (!b))); // le robot doit tourner à droite lorsque la condition est vrai c'est à dire ( le capteur à droite est en noir OU bien le capteur droite ET le milieu en noir )
  left = ((a && (!d)) && (b || (!c))); // le robot doit tourner à gauche lorsque la condition est vrai c'est à dire ( le capteur à gauche est en noir OU bien le capteur gauche ET le milieu  en noir )
  backward = (((!a) && (!c)) && ((!b) && (!d))); // le robot doit étre marche en arriére lorsque il sort de map c'est à dire les 4 capteur en blanc
  forward = ((!a) && (b) && (c) && (!d)); // le robot doit étre marche en avant lorsque le 2 capteur au milieu est en noir
  stope = (a && b && c && d); // le robot fait un stop lorsque les 4 capteur en noir
  lecture ();// fonction pour just affichier le valeur des capteur en moniteur série
  distance =  mesureDistance();  // on lit la valeur en cm
  if (PasObstacle)  {
    z = digitalRead(20);
    w = digitalRead(21);
    if ((stope) && (w == 1)) // si le robot est en stop est on appui sue le bouton rouge il tourne droite
    {
      droite ();
      delay(500);
    }
    else if ((stope) && (z == 1)) // si le robot est en stop est on appui sue le bouton vert rouge il marche avant
    {
      avant();
      delay(500);
    }
    if (left)
    {
      gauche () ;
    }
    else if (right)
    {
      droite();
    }
    else if (forward)
    {
      avant();
    }
    else if (backward)
    {
      arrier ();
    }
    else if (stope)
    {
      stopp();
    }
  }
  else
  {
    stopp();
  }
}
unsigned int mesureDistance() { // fonctin pour comparer la distance calculé avec la distanceobstacle
  int  cm = sonar.ping_cm();
  if (cm > distanceObstacle) {
    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
}

void lecture ()
{
  Serial.print(a);
  Serial.print(b);
  Serial.print(c);
  Serial.println(d);
}
void gauche ()
{
  analogWrite(varmot1, 100);
  digitalWrite(av1, 0);
  digitalWrite(ar1, 0);
  analogWrite(varmot2, 255);
  digitalWrite(av2, 1);
  digitalWrite(ar2, 0);
}
void droite ()
{
  analogWrite(varmot1, 255);
  digitalWrite(av1, 1);
  digitalWrite(ar1, 0);
  analogWrite(varmot2, 100);
  digitalWrite(av2, 0);
  digitalWrite(ar2, 0);
}

void avant ()
{
  analogWrite(varmot1, 250);
  digitalWrite(av2, HIGH);
  digitalWrite(ar2, LOW);
  analogWrite(varmot2, 250);
  digitalWrite(av1, 1);
  digitalWrite(ar1, 0);
}
void arrier ()
{
  analogWrite(varmot1, 150);
  digitalWrite(av2, LOW);
  digitalWrite(ar2, HIGH);
  analogWrite(varmot2, 150);
  digitalWrite(av1, 0);
  digitalWrite(ar1, 1);
}
void stopp ()
{
  digitalWrite(av1, LOW);
  digitalWrite(ar1, LOW);
  digitalWrite(av2, LOW);
  digitalWrite(ar2, LOW);
}