Problème Pixy et arduino

Bonjour
Dans le cadre d’un projet nous essayons de faire suivre à notre robot une ligne blanche.Nous disposons d’une caméra pixy,d’une carte arduino,d’un pont en H et de deux moteur. Nous avons fait un montage mais le robot ne suit pas la ligne et je pense que cela vient du code. Quelqu’un pourrait il le verrifier/corriger.

#include <SPI.h>
#include <Pixy.h>
#include <Wire.h>

#include <IRremote.h>

Pixy pixy;
#define pinIN1 2
#define pinIN2 6
#define pinENA 9 // doit être une pin PWM 

// définition des pins de l'Arduino qui contrôlent le 2e moteur
#define pinIN3 4
#define pinIN4 5
#define pinENB 10 // doit être une pin PWM 

IRsend ir_send;
int a = 0;
int b = 0;


void setup() {
 Serial.begin(9600);
 pinMode(pinIN1, OUTPUT);
 pinMode(pinIN2, OUTPUT);
 pinMode(pinENA, OUTPUT);

 pinMode(pinIN3, OUTPUT);
 pinMode(pinIN4, OUTPUT);
 pinMode(pinENB, OUTPUT);
 pixy.init();
 
}

void loop() { 
    
static int i = 0;
 int j;
 uint16_t blocks;
 char buf[32]; 
 
 blocks = pixy.getBlocks();
 if (blocks)
 {
   i++;
   
   // do this (print) every 50 frames because printing every
   // frame would bog down the Arduino
   if (i%50==0)
   {
     sprintf(buf, "Detected %d:\n", blocks);
     Serial.print(buf);
     for (j=0; j<blocks; j++)
     {
       sprintf(buf, "  block %d: ", j);
       Serial.print(buf); 
       pixy.blocks[j].print();

     }
 
   }






  if((a==0))
 {
   ir_send.sendNEC(0xFF30CF, 32); // connexion après amerissage
   Serial.println("rien");
   Serial.println(a);
 } 

  if((pixy.blocks[0].x>120)&&(pixy.blocks[0].x<190))
  {
   Serial.println("jaune");
   delay(100);
   a=1
   ;}

  if((pixy.blocks[2].x>120)&&(pixy.blocks[2].x<190))
  {
  b=1;
  ir_send.sendNEC(0xFF7A85, 32); // déclenchement de processus de retour sur terre
  Serial.println("bleu");
  
  }

  //if (pixy.blocks[3]) code pour lacher drapeau
  //if (pixy.blocks[4]) code pour lacher balise
  

 if((a==1)&&(b==0))
 {
  ir_send.sendNEC(0xFF18E7, 32); // envoie de données scientifiques
  Serial.println("rouge");
  Serial.println(a);
   
   if((pixy.blocks[1].x>120)&&(pixy.blocks[1].x<190)) 
   {
     analogWrite(pinENA, 140); // vitesse maximale
     digitalWrite(pinIN1, true); 
     digitalWrite(pinIN2, false);
 
     analogWrite(pinENB, 140); 
     digitalWrite(pinIN3, false); 
     digitalWrite(pinIN4, true);
     }
   if((pixy.blocks[1].x<120))
   {
     analogWrite(pinENA, 140); // vitesse maximale
     digitalWrite(pinIN1, true); // le contraire de ce qu'on avait en marche avant
     digitalWrite(pinIN2, false);

     analogWrite(pinENB, 60); // vitesse assez lente: augmentez le nombre si votre moteur ne tourne pas du tout
     digitalWrite(pinIN3, false); // le contraire de ce qu'on avait en marche arrière
     digitalWrite(pinIN4, true);
   ;}
 
   if(pixy.blocks[1].x>190) 
   {
     analogWrite(pinENA, 60); // vitesse maximale
     digitalWrite(pinIN1, true); // le contraire de ce qu'on avait en marche avant
     digitalWrite(pinIN2, false);
     analogWrite(pinENB, 140); // vitesse assez lente: augmentez le nombre si votre moteur ne tourne pas du tout
     digitalWrite(pinIN3, false); // le contraire de ce qu'on avait en marche arrière
     digitalWrite(pinIN4, true);
   ;}

}
}
}