Problème programme pour robot sumo

Bonjour a tous, j'ai un léger problème concernant mon programme pour mon robot sumo: c'est un robot composé de deux motoreducteurs, d'un capteur ultrason et de deux capteurs infrarouges. le but du robot est de pousser l'adversaire hors de la piste(rond noir avec des bandes blanches.) pour cela, il est muni d'un capteur US pour capter l'adversaire et de deux capteurs IR pour capter les bords blancs de la piste pour ne pas en sortir.

pouvez vous m'aider a finir mon programme et a me dire ou se branchent mes pins des IR (GND: negatif/VIN:positif/OUT:sortie arduino ???) il y a deux pins out que je ne sait pas brancher.

J'ai besoin de dire a mon robot que si je suis au bord blanc et que le capteur droit le détecte, il fasse faire demi tour vers la gauche, et inversement.

Merci pour votre aide !

int distanceEnCm = 0 ;
int ValeurRecueParCapteur(int trigPin, int echoPin) // Derrière ce pavé de code immonde se cache la fonction automatiquement générée par Ardublock et qui code un capteur ultrason.
{
  long duration; //les valeurs de type long sont des variables de taille élargie (pas clair) qui permettent de stocker des entiers, codées en 4 octets
   //NB: L'impédance électrique mesure l'opposition d'un circuit électrique au passage d'un courant alternatif sinusoïdal. #Merci Wikipédia
  pinMode(trigPin, OUTPUT); //trigPin représente le pin sur lequel sera branché le "trigger" ou "détente" de l'émetteur ultrason. OUTPUT signifie qu'on le définit en "sortie", c'est à dire qu'on le règle en état de basse impédance/résistance: on lui permet de transmettre beaucoup de courant (on lui permet du coup d'envoyer un signal électrique convertit en une onde sonore)
  pinMode(echoPin, INPUT); // Au contraire, la broche qui reçoit l'écho -le recepteur- ultrason est branchée en entrée, pour ne délivrer qu'une faible quantité de courant. Elle agit comme une grosse réisstance (100 MegaOhms). Apparemment, c'est utile pour lire une valeur reçue par un capteur. D'où l'intérêt de la mettre là :)
  digitalWrite(trigPin, LOW); // Cela signifie qu'on envoie un courant de 0 Volts sur le trigPin (on n'envoie rien). J'explique avec la suite. On éteint un peu la broche.
  delayMicroseconds(2); // 2µs de délai avant la prochaine action
  digitalWrite(trigPin, HIGH); // Là on envoie du courant (5V) -c'est du tout ou rien: 5 V ou 0 V- , le temps de la mesure, pour envoyer un signal électrique convertit en ultrason
  delayMicroseconds(20); // On donne 20µs de temps à la mesure pour se faire. Au delà du temps, elle est considérée comme perdue.
  digitalWrite(trigPin, LOW); // On coupe l'afflux de courant car on a fini la mesure.
  duration = pulseIn(echoPin, HIGH); // Dans la variable duration, on stocke la durée de l'impulsion (temps du passage entre l'état bas à haut de la broche echo)
  duration = duration / 59; // On divise duration par 59 (allez savoir pourquoi) pour convertir une donnée temporelle en donnée métrique (en cm)
  return duration; // Alors on récupère duration
}

int moteur1_enablePin=11; // Je branche le câble de contrôle de la vitesse sur un Pin PWM. Grâce à cela, je pourrai changer la valeur de la vitesse de rotation du moteur (entre 0 et 255 unités)
int moteur1_in1Pin=13; // Le moteur est branché sur trois broches, on choisit arbitrairement - a priori, c'est un peu trouble- les pins 13 et 12 en plus du PWM 11 pour le moteur dit moteur 1.
int moteur1_in2Pin=12;

int moteur2_enablePin=10; //Pareil que celui du dessus :), avec le PWM 10 et les pins normaux 8 et 7.
int moteur2_in1Pin=8;
int moteur2_in2Pin=7;



void setup()  // Le "void setup" correspond à une boucle unique dans chaque programme Arduino, dans laquelle on définit les variables etc...
{ 
  digitalWrite(5,LOW);
  Serial.begin(9600); // Définit la vitesse de transfert de caractère entre la carte et l'ordinateur (pour le moniteur série)
   //On commence par initialiser les pins du moteur1


  pinMode(moteur1_in1Pin, OUTPUT); 
  pinMode(moteur1_in2Pin, OUTPUT);  
  pinMode(moteur1_enablePin, OUTPUT);
  
  //Puis du moteur2
  
 pinMode(moteur2_in1Pin, OUTPUT);
 pinMode(moteur2_in2Pin, OUTPUT);
 pinMode(moteur2_enablePin, OUTPUT);
}


void SetMoteur1(int speed, boolean reverse) // Boucle qui définit les "données du moteur": speed est un entier entre 0 et 255 qui correspond à la vitesse de rotation et boolean est une variabe de type binaire (true ou false) qui correspond au sens de rotation
{
  analogWrite(moteur1_enablePin, speed); // On définit la vitesse de rotation grâce au pin PWN
  digitalWrite(moteur1_in1Pin, ! reverse); // Et les sens de rotation grâce aux deux autres pins: reverse signifiant qu'on change le sens. Je suppose, ce n'était précisé nulle part, je fais juste preuve de bon sens?
  digitalWrite(moteur1_in2Pin, reverse);
  
}

void SetMoteur2(int speed, boolean reverse) // Idem avec une autre boucle pour le moteur 2
{
  analogWrite(moteur2_enablePin, speed);
  digitalWrite(moteur2_in1Pin, ! reverse);
  digitalWrite(moteur2_in2Pin, reverse);
}

void loop() // "Loop" = "boucle" en anglais. La fonction "void loop" signifie donc qu'on va lancer en boucle la partie du code qui se situe à l'intérieur, pour que le programme fonctionne. Ca correspond à une fonction lancée dans python finalement.
{ 
  distanceEnCm = ValeurRecueParCapteur( 5 , 3 ) ;
  Serial.print("distance");
  Serial.print(" ");
  Serial.print(distanceEnCm);
  Serial.print(" ");
  Serial.println();
  
   if (distanceEnCm > 15)
  { SetMoteur1(0, false);
    SetMoteur2(0, false);
    delay(100);
    Serial.print("lance un peu mais pas trop");
    distanceEnCm = ValeurRecueParCapteur( 5 , 3 );
    Serial.print("message");
    Serial.print(" ");
    Serial.print(distanceEnCm);
    Serial.print(" ");
    Serial.println();
    delay(100);
    distanceEnCm = ValeurRecueParCapteur( 5 , 3 ) ;
    Serial.print("message");
    Serial.print(" ");
    Serial.print(distanceEnCm);
    Serial.print(" ");
    Serial.println();
    SetMoteur2(0, true);
    SetMoteur1(200, false);
    Serial.print("l'autre roue tourne");
    delay(300);
    distanceEnCm = ValeurRecueParCapteur( 5 , 3 ) ;
    Serial.print("message");
    Serial.print(" ");
    Serial.print(distanceEnCm);
    Serial.print(" ");
    Serial.println();
  }
  
  else 

  {
    SetMoteur1(0, false);
    SetMoteur2(0, false);
    Serial.print("s'arrete");
    delay(500);
    SetMoteur1(255, false);
    SetMoteur2(255, false);
    Serial.print("repart");
    delay(2000);
    SetMoteur1(255, false);
    SetMoteur2(255, false);
    Serial.print("va encore mieux");
    delay(500);
    SetMoteur1(0, true);
    SetMoteur2(100, true);
    Serial.print("la roue tourne seule");
    delay(200);
    distanceEnCm = ValeurRecueParCapteur( 5 , 3 ) ;
    Serial.print("message");
    Serial.print(" ");
    Serial.print(distanceEnCm);
    Serial.print(" ");
    Serial.println();
          }

}