Mon moteur ne fonctionne pas dans "void loop"

J'utilise un moteur brancher a un shield, le moteur marche bien dans d'autres programmes mais spécialement dans la boucle "void loop" de mon programme il ne s'allume pas.

Je cherche a controller un robot avec ceci mais je ne peut pas sans pouvoir controller des moteurs correctement

#include "Adafruit_VL53L0X.h"
#include <Wire.h>
#include "rgb_lcd.h"
#include <AFMotor.h>

bool _ABVAR_1_ManAuto = false ;
bool _ABVAR_2_Avancer = false ;
bool _ABVAR_3_Reculer = false ;
bool _ABVAR_4_Droite = false ;
bool _ABVAR_5_Gauche = false ;
bool _ABVAR_6_STOP = false ;
int _ABVAR_7_Longeur = 0 ;
int _ABVAR_8_Largeur = 0 ;
int _ABVAR_9_L = 0 ;
int _ABVAR_10_l = 0 ;
int _ABVAR_11_Dgauche = 0 ;
int _ABVAR_12_DDroit = 0 ;
int _ABVAR_13_LargeurRobot = 0 ;
int _ABVAR_14_angle = 0 ;
int _ABVAR_15_a;
int _ABVAR_1_test = 0 ;

rgb_lcd lcd;

const int colorR = 0;
const int colorG = 0;
const int colorB = 0;

#define LOX3_ADDRESS 0x29
#define LOX2_ADDRESS 0x30
#define LOX1_ADDRESS 0x31

#define SHT_LOX1 7
#define SHT_LOX2 6
#define XSHUT_pin1 22

Adafruit_VL53L0X lox1 = Adafruit_VL53L0X();
Adafruit_VL53L0X lox2 = Adafruit_VL53L0X();
Adafruit_VL53L0X lox3 = Adafruit_VL53L0X();

VL53L0X_RangingMeasurementData_t measure1;
VL53L0X_RangingMeasurementData_t measure2;

AF_DCMotor moteur1(1);
void setID() {
  lcd.begin(16, 2);

  lcd.setRGB(colorR, colorG, colorB);

  lcd.print("initialisation");

  lox1.begin(0x29);
  lox2.begin(0x29);
  lox3.begin(0x29);


  pinMode(XSHUT_pin1, OUTPUT);
  lox3.begin(0x30);
  pinMode(XSHUT_pin1, INPUT);
  delay (10) ;
  lox3.begin(0x31);
  analogWrite(52, 255);


  // all reset
  digitalWrite(SHT_LOX1, LOW);
  digitalWrite(SHT_LOX2, LOW);
  delay(10);
  // all unreset
  digitalWrite(SHT_LOX1, HIGH);
  digitalWrite(SHT_LOX2, HIGH);
  delay(10);

  // activating LOX1 and reseting LOX2
  digitalWrite(SHT_LOX1, HIGH);
  digitalWrite(SHT_LOX2, LOW);

  // initing LOX1
  if (!lox1.begin(LOX1_ADDRESS)) {
    Serial.println(F("Failed to boot first VL53L0X"));
    while (1);
  }
  delay(10);

  // activating LOX2
  digitalWrite(SHT_LOX2, HIGH);
  delay(10);

  //initing LOX2
  if (!lox2.begin(LOX2_ADDRESS)) {
    Serial.println(F("Failed to boot second VL53L0X"));
    while (1);
  }
}

void read_dual_sensors() {

  lcd.clear();

  lox1.rangingTest(&measure1, false);
  lox2.rangingTest(&measure2, false);

  Serial.print("capteur 1: ");
  if (measure1.RangeStatus != 4) {
    Serial.print(measure1.RangeMilliMeter - 30);
    Serial.print("mm                 ");
  } else {
    Serial.print("trop loin     ");
    lcd.setCursor(1, 1); {
      lcd.print("XX");
    }
  }

  Serial.print(" ");


  Serial.print("capteur 2: ");
  if (measure2.RangeStatus != 4) {
    Serial.print(measure2.RangeMilliMeter - 30);
    const char CAP2 = (measure2.RangeMilliMeter - 30);
    Serial.print("mm");
  } else {
    Serial.print("trop loin");
    lcd.setCursor(1, 1); {
      lcd.print("XX");
    }
  }

  Serial.println();
  lcd.setCursor(0, 0); {
    lcd.print("cap1        cap2");
  }
  if ((measure1.RangeMilliMeter - 30) < 7000) {
    lcd.setCursor(1, 1); {
      lcd.print(measure1.RangeMilliMeter - 30);
    }
  } else {
    lcd.setCursor(1, 1); {
      lcd.print("out");
    }

  }
  if ((measure2.RangeMilliMeter - 30) < 7000) {
    lcd.setCursor(13, 1); {
      lcd.print(measure2.RangeMilliMeter - 30);
    }
  } else {
    lcd.setCursor(13, 1); {
      lcd.print("out");
    }

  }

  delay(10);
}

void setup() {
  moteur1.run(RELEASE);
moteur1.run(FORWARD);
moteur1.setSpeed(255);

  Serial.begin(9600);
  while (! Serial) {
    delay(1);
  }

  pinMode(SHT_LOX1, OUTPUT);
  pinMode(SHT_LOX2, OUTPUT);

  Serial.println("Shutdown pins inited...");

  digitalWrite(SHT_LOX1, LOW);
  digitalWrite(SHT_LOX2, LOW);

  Serial.println("Both in reset mode...(pins are low)");


  Serial.println("Starting...");
  setID();

  pinMode( 33 , INPUT);
  pinMode( 35 , INPUT);
  pinMode( 37 , INPUT);
  pinMode( 39 , INPUT);
  pinMode( 41 , INPUT);
  pinMode( 31 , INPUT);

}


void loop() {
  moteur1.run(RELEASE);
moteur1.run(FORWARD);
moteur1.setSpeed(255);
delay(1000);

  Serial.println("la ca devrait marcher");
  read_dual_sensors();
  _ABVAR_1_ManAuto = digitalRead(31) ;
  _ABVAR_2_Avancer = digitalRead(33) ;
  _ABVAR_3_Reculer = digitalRead(35) ;
  _ABVAR_4_Droite = digitalRead(37) ;
  _ABVAR_5_Gauche = digitalRead(39) ;
  _ABVAR_6_STOP = digitalRead(41) ;
  _ABVAR_7_Longeur = 14 ;
  _ABVAR_8_Largeur = 15 ;
  _ABVAR_9_L = 0 ;
  _ABVAR_10_l = 0 ;
  _ABVAR_11_Dgauche = 0 ;
  _ABVAR_12_DDroit = 0 ;
  _ABVAR_13_LargeurRobot = 70 ;
  _ABVAR_14_angle = 0 ;
  _ABVAR_1_test = analogRead(0);

  if (( ( _ABVAR_1_ManAuto ) == (LOW) ))
  { read_dual_sensors();
    while ( ( ( _ABVAR_1_ManAuto ) == (LOW) ) )
    { read_dual_sensors();
      _ABVAR_1_test = analogRead(0);
      if (( ( _ABVAR_1_test ) > ( 50 ) ))
      {
        while ( ( ( ( ( _ABVAR_3_Reculer ) == ( LOW ) ) && ( ( _ABVAR_5_Gauche ) == ( LOW ) ) ) && ( ( ( _ABVAR_4_Droite ) == ( LOW ) ) && ( ( _ABVAR_6_STOP ) == ( LOW ) ) && (( ( _ABVAR_1_test ) > ( 50 ) )) ) ) )
        { moteur1.run(FORWARD);
          moteur1.setSpeed(255);
          delay(1000);
          read_dual_sensors();
          _ABVAR_1_test = analogRead(0);
          Serial.println(_ABVAR_1_test);
        }
      }
      else
      {
        if (( ( _ABVAR_3_Reculer ) == ( HIGH ) ))
        {
          while ( ( ( ( ( _ABVAR_2_Avancer ) == ( LOW ) ) && ( ( _ABVAR_5_Gauche ) == ( LOW ) ) ) && ( ( ( _ABVAR_4_Droite ) == ( LOW ) ) && ( ( _ABVAR_6_STOP ) == ( LOW ) ) ) ) )
          { moteur1.run(BACKWARD);
            read_dual_sensors();
          }
        }
        else
        {
          if (( ( _ABVAR_5_Gauche ) == ( HIGH ) ))
          {
            while ( ( ( ( ( _ABVAR_2_Avancer ) == ( LOW ) ) && ( ( _ABVAR_3_Reculer ) == ( LOW ) ) ) && ( ( ( _ABVAR_4_Droite ) == ( LOW ) ) && ( ( _ABVAR_6_STOP ) == ( LOW ) ) ) ) )
            { moteur1.run(FORWARD);
              read_dual_sensors();
            }
          }
          else
          {
            if (( ( _ABVAR_4_Droite ) == ( HIGH ) ))
            {
              while ( ( ( ( ( _ABVAR_2_Avancer ) == ( LOW ) ) && ( ( _ABVAR_3_Reculer ) == ( LOW ) ) ) && ( ( ( _ABVAR_5_Gauche ) == ( LOW ) ) && ( ( _ABVAR_6_STOP ) == ( LOW ) ) ) ) )
              { moteur1.run(BACKWARD);
                read_dual_sensors();
              }
            }
            else
            {
              if (( ( _ABVAR_6_STOP ) == ( HIGH ) ))
              {
                while ( ( ( ( ( _ABVAR_2_Avancer ) == ( LOW ) ) && ( ( _ABVAR_3_Reculer ) == ( LOW ) ) ) && ( ( ( _ABVAR_5_Gauche ) == ( LOW ) ) && ( ( _ABVAR_4_Droite ) == ( LOW ) ) ) ) )
                {
                  read_dual_sensors();
                }
              }
            }
          }
        }
      }
    }
  }
  else
  {
    read_dual_sensors();
  }
}

Tu mets des pinMode un peu partout, c'est difficile de s'y retrouver. Mets les tous au tout début du setup et nulle part ailleurs.

je ne voit pas quoi faire de plus

#include "Adafruit_VL53L0X.h"
#include <Wire.h>
#include "rgb_lcd.h"
#include <AFMotor.h>

bool _ABVAR_1_ManAuto = false ;
bool _ABVAR_2_Avancer = false ;
bool _ABVAR_3_Reculer = false ;
bool _ABVAR_4_Droite = false ;
bool _ABVAR_5_Gauche = false ;
bool _ABVAR_6_STOP = false ;
int _ABVAR_7_Longeur = 0 ;
int _ABVAR_8_Largeur = 0 ;
int _ABVAR_9_L = 0 ;
int _ABVAR_10_l = 0 ;
int _ABVAR_11_Dgauche = 0 ;
int _ABVAR_12_DDroit = 0 ;
int _ABVAR_13_LargeurRobot = 0 ;
int _ABVAR_14_angle = 0 ;
int _ABVAR_15_a;
int _ABVAR_1_test = 0 ;

rgb_lcd lcd;

const int colorR = 0;
const int colorG = 0;
const int colorB = 0;

#define LOX3_ADDRESS 0x29
#define LOX2_ADDRESS 0x30
#define LOX1_ADDRESS 0x31

#define SHT_LOX1 7
#define SHT_LOX2 6
#define XSHUT_pin1 22

Adafruit_VL53L0X lox1 = Adafruit_VL53L0X();
Adafruit_VL53L0X lox2 = Adafruit_VL53L0X();
Adafruit_VL53L0X lox3 = Adafruit_VL53L0X();

VL53L0X_RangingMeasurementData_t measure1;
VL53L0X_RangingMeasurementData_t measure2;

AF_DCMotor moteur1(1);
void setID() {
  lcd.begin(16, 2);

  lcd.setRGB(colorR, colorG, colorB);

  lcd.print("initialisation");

  lox1.begin(0x29);
  lox2.begin(0x29);
  lox3.begin(0x29);


  pinMode(XSHUT_pin1, OUTPUT);
  lox3.begin(0x30);
  pinMode(XSHUT_pin1, INPUT);
  delay (10) ;
  lox3.begin(0x31);
  analogWrite(52, 255);


  // all reset
  digitalWrite(SHT_LOX1, LOW);
  digitalWrite(SHT_LOX2, LOW);
  delay(10);
  // all unreset
  digitalWrite(SHT_LOX1, HIGH);
  digitalWrite(SHT_LOX2, HIGH);
  delay(10);

  // activating LOX1 and reseting LOX2
  digitalWrite(SHT_LOX1, HIGH);
  digitalWrite(SHT_LOX2, LOW);

  // initing LOX1
  if (!lox1.begin(LOX1_ADDRESS)) {
    Serial.println(F("Failed to boot first VL53L0X"));
    while (1);
  }
  delay(10);

  // activating LOX2
  digitalWrite(SHT_LOX2, HIGH);
  delay(10);

  //initing LOX2
  if (!lox2.begin(LOX2_ADDRESS)) {
    Serial.println(F("Failed to boot second VL53L0X"));
    while (1);
  }
}

void read_dual_sensors() {

  lcd.clear();

  lox1.rangingTest(&measure1, false);
  lox2.rangingTest(&measure2, false);

  Serial.print("capteur 1: ");
  if (measure1.RangeStatus != 4) {
    Serial.print(measure1.RangeMilliMeter - 30);
    Serial.print("mm                 ");
  } else {
    Serial.print("trop loin     ");
    lcd.setCursor(1, 1); {
      lcd.print("XX");
    }
  }

  Serial.print(" ");


  Serial.print("capteur 2: ");
  if (measure2.RangeStatus != 4) {
    Serial.print(measure2.RangeMilliMeter - 30);
    const char CAP2 = (measure2.RangeMilliMeter - 30);
    Serial.print("mm");
  } else {
    Serial.print("trop loin");
    lcd.setCursor(1, 1); {
      lcd.print("XX");
    }
  }

  Serial.println();
  lcd.setCursor(0, 0); {
    lcd.print("cap1        cap2");
  }
  if ((measure1.RangeMilliMeter - 30) < 7000) {
    lcd.setCursor(1, 1); {
      lcd.print(measure1.RangeMilliMeter - 30);
    }
  } else {
    lcd.setCursor(1, 1); {
      lcd.print("trop loin");
    }

  }
  if ((measure2.RangeMilliMeter - 30) < 7000) {
    lcd.setCursor(13, 1); {
      lcd.print(measure2.RangeMilliMeter - 30);
    }
  } else {
    lcd.setCursor(13, 1); {
      lcd.print("trop loin");
    }

  }

  delay(10);
}

void setup() {
  moteur1.run(RELEASE);
  moteur1.run(FORWARD);
  moteur1.setSpeed(255);

  Serial.begin(9600);
  while (! Serial) {
    delay(1);
  }

  pinMode(SHT_LOX1, OUTPUT);
  pinMode(SHT_LOX2, OUTPUT);

  Serial.println("Shutdown pins inited...");

  digitalWrite(SHT_LOX1, LOW);
  digitalWrite(SHT_LOX2, LOW);

  Serial.println("Both in reset mode...(pins are low)");


  Serial.println("Starting...");
  setID();

  pinMode( 33 , INPUT);
  pinMode( 35 , INPUT);
  pinMode( 37 , INPUT);
  pinMode( 39 , INPUT);
  pinMode( 41 , INPUT);
  pinMode( 31 , INPUT);

}


void loop() {
  moteur1.run(RELEASE);
  moteur1.run(FORWARD);
  moteur1.setSpeed(255);
  delay(1000);

  Serial.println("la ca devrait marcher");
  read_dual_sensors();

  _ABVAR_7_Longeur = 14 ;
  _ABVAR_8_Largeur = 15 ;
  _ABVAR_9_L = 0 ;
  _ABVAR_10_l = 0 ;
  _ABVAR_11_Dgauche = 0 ;
  _ABVAR_12_DDroit = 0 ;
  _ABVAR_13_LargeurRobot = 70 ;
  _ABVAR_14_angle = 0 ;
  _ABVAR_1_test = analogRead(0);

  if (( ( _ABVAR_1_ManAuto ) == (LOW) ))
  { read_dual_sensors();
    while ( ( ( _ABVAR_1_ManAuto ) == (LOW) ) )
    { read_dual_sensors();
      _ABVAR_1_test = analogRead(0);
      if (( ( _ABVAR_1_test ) > ( 50 ) ))
      {
        while ( ( ( ( ( _ABVAR_3_Reculer ) == ( LOW ) ) && ( ( _ABVAR_5_Gauche ) == ( LOW ) ) ) && ( ( ( _ABVAR_4_Droite ) == ( LOW ) ) && ( ( _ABVAR_6_STOP ) == ( LOW ) ) && (( ( _ABVAR_1_test ) > ( 50 ) )) ) ) )
        { moteur1.run(FORWARD);
          moteur1.setSpeed(255);
          delay(1000);
          read_dual_sensors();
          _ABVAR_1_test = analogRead(0);
          Serial.println(_ABVAR_1_test);
          _ABVAR_1_ManAuto = digitalRead(31) ;
          _ABVAR_2_Avancer = digitalRead(33) ;
          _ABVAR_3_Reculer = digitalRead(35) ;
          _ABVAR_4_Droite = digitalRead(37) ;
          _ABVAR_5_Gauche = digitalRead(39) ;
          _ABVAR_6_STOP = digitalRead(41) ;
        }
      }
      else
      {
        if (( ( _ABVAR_3_Reculer ) == ( HIGH ) ))
        {
          while ( ( ( ( ( _ABVAR_2_Avancer ) == ( LOW ) ) && ( ( _ABVAR_5_Gauche ) == ( LOW ) ) ) && ( ( ( _ABVAR_4_Droite ) == ( LOW ) ) && ( ( _ABVAR_6_STOP ) == ( LOW ) ) ) ) )
          { moteur1.run(BACKWARD);
            read_dual_sensors();
            _ABVAR_1_ManAuto = digitalRead(31) ;
            _ABVAR_2_Avancer = digitalRead(33) ;
            _ABVAR_3_Reculer = digitalRead(35) ;
            _ABVAR_4_Droite = digitalRead(37) ;
            _ABVAR_5_Gauche = digitalRead(39) ;
            _ABVAR_6_STOP = digitalRead(41) ;
          }
        }
        else
        {
          if (( ( _ABVAR_5_Gauche ) == ( HIGH ) ))
          {
            while ( ( ( ( ( _ABVAR_2_Avancer ) == ( LOW ) ) && ( ( _ABVAR_3_Reculer ) == ( LOW ) ) ) && ( ( ( _ABVAR_4_Droite ) == ( LOW ) ) && ( ( _ABVAR_6_STOP ) == ( LOW ) ) ) ) )
            { moteur1.run(FORWARD);
              read_dual_sensors();
              _ABVAR_1_ManAuto = digitalRead(31) ;
              _ABVAR_2_Avancer = digitalRead(33) ;
              _ABVAR_3_Reculer = digitalRead(35) ;
              _ABVAR_4_Droite = digitalRead(37) ;
              _ABVAR_5_Gauche = digitalRead(39) ;
              _ABVAR_6_STOP = digitalRead(41) ;
            }
          }
          else
          {
            if (( ( _ABVAR_4_Droite ) == ( HIGH ) ))
            {
              while ( ( ( ( ( _ABVAR_2_Avancer ) == ( LOW ) ) && ( ( _ABVAR_3_Reculer ) == ( LOW ) ) ) && ( ( ( _ABVAR_5_Gauche ) == ( LOW ) ) && ( ( _ABVAR_6_STOP ) == ( LOW ) ) ) ) )
              { moteur1.run(BACKWARD);
                read_dual_sensors();
                _ABVAR_1_ManAuto = digitalRead(31) ;
                _ABVAR_2_Avancer = digitalRead(33) ;
                _ABVAR_3_Reculer = digitalRead(35) ;
                _ABVAR_4_Droite = digitalRead(37) ;
                _ABVAR_5_Gauche = digitalRead(39) ;
                _ABVAR_6_STOP = digitalRead(41) ;
              }
            }
            else
            {
              if (( ( _ABVAR_6_STOP ) == ( HIGH ) ))
              {
                while ( ( ( ( ( _ABVAR_2_Avancer ) == ( LOW ) ) && ( ( _ABVAR_3_Reculer ) == ( LOW ) ) ) && ( ( ( _ABVAR_5_Gauche ) == ( LOW ) ) && ( ( _ABVAR_4_Droite ) == ( LOW ) ) ) ) )
                {
                  read_dual_sensors();
                  _ABVAR_1_ManAuto = digitalRead(31) ;
                  _ABVAR_2_Avancer = digitalRead(33) ;
                  _ABVAR_3_Reculer = digitalRead(35) ;
                  _ABVAR_4_Droite = digitalRead(37) ;
                  _ABVAR_5_Gauche = digitalRead(39) ;
                  _ABVAR_6_STOP = digitalRead(41) ;
                }
              }
            }
          }
        }
      }
    }
  }
  else
  {
    read_dual_sensors();
  }
}

Vous avez 7 tests imbriqués, qui dépassent les capacités de lecture rapide à des fins de comprehension et de dépannage.
Vous avez très peu de commentaires, rendant difficile de pifomètrer ce que vous souhaitez faire (en tête du programme, un commentaire général, liant les senseurs aux actions moteur, par exemple, serait fort utile : que ferz vous si vous voulez récupèrer votre code dans 6 mois) ... et les propositions de correction dans cette configuration , nécessiteraient un pifomètre certifié...

çà devrais être mieux...

#include "Adafruit_VL53L0X.h"
#include <Wire.h>
#include "rgb_lcd.h"
#include <AFMotor.h>

//define var // definire les variables
bool _ABVAR_1_ManAuto = false ;
bool _ABVAR_2_Avancer = false ;
bool _ABVAR_3_Reculer = false ;
bool _ABVAR_4_Droite = false ;
bool _ABVAR_5_Gauche = false ;
bool _ABVAR_6_STOP = false ;
int _ABVAR_7_Longeur = 0 ;
int _ABVAR_8_Largeur = 0 ;
int _ABVAR_9_L = 0 ;
int _ABVAR_10_l = 0 ;
int _ABVAR_11_Dgauche = 0 ;
int _ABVAR_12_DDroit = 0 ;
int _ABVAR_13_LargeurRobot = 0 ;
int _ABVAR_14_angle = 0 ;
int _ABVAR_15_a;
int _ABVAR_1_test = 0 ;

rgb_lcd lcd;

const int colorR = 0;
const int colorG = 0;
const int colorB = 0;

// define lox //definire les differents I2C
#define LOX3_ADDRESS 0x29
#define LOX2_ADDRESS 0x30
#define LOX1_ADDRESS 0x31

//define Xshut pin // definire la pin XSHUT
#define SHT_LOX1 7
#define SHT_LOX2 6
#define XSHUT_pin1 22

//define sensors // definire les capteurs
Adafruit_VL53L0X lox1 = Adafruit_VL53L0X();
Adafruit_VL53L0X lox2 = Adafruit_VL53L0X();
Adafruit_VL53L0X lox3 = Adafruit_VL53L0X();

VL53L0X_RangingMeasurementData_t measure1;
VL53L0X_RangingMeasurementData_t measure2;

//define motor //definire les moteurs
AF_DCMotor moteur1(1);

void setID() {
  lcd.begin(16, 2);

  lcd.setRGB(colorR, colorG, colorB);

  lcd.print("initialisation");

  //reset sensors // remettre les capteurs a 0
  lox1.begin(0x29);
  lox2.begin(0x29);
  lox3.begin(0x29);


  pinMode(XSHUT_pin1, OUTPUT);
  lox3.begin(0x30);
  pinMode(XSHUT_pin1, INPUT);
  delay (10) ;
  lox3.begin(0x31);
  analogWrite(52, 255);

  //initialisation des capteurs
  // all reset
  digitalWrite(SHT_LOX1, LOW);
  digitalWrite(SHT_LOX2, LOW);
  delay(10);
  // all unreset
  digitalWrite(SHT_LOX1, HIGH);
  digitalWrite(SHT_LOX2, HIGH);
  delay(10);

  // activating LOX1 and reseting LOX2
  digitalWrite(SHT_LOX1, HIGH);
  digitalWrite(SHT_LOX2, LOW);

  // initing LOX1
  if (!lox1.begin(LOX1_ADDRESS)) {
    Serial.println(F("Failed to boot first VL53L0X"));
    while (1);
  }
  delay(10);

  // activating LOX2
  digitalWrite(SHT_LOX2, HIGH);
  delay(10);

  //initing LOX2
  if (!lox2.begin(LOX2_ADDRESS)) {
    Serial.println(F("Failed to boot second VL53L0X"));
    while (1);
  }
}

void read_dual_sensors() {
// read captor on serial monitor // lire les capteurs sur le moniteur
  lcd.clear();

  lox1.rangingTest(&measure1, false);
  lox2.rangingTest(&measure2, false);

  Serial.print("capteur 1: ");
  if (measure1.RangeStatus != 4) {
    Serial.print(measure1.RangeMilliMeter - 30);
    Serial.print("mm                 ");
  } else {
    Serial.print("trop loin     ");
    lcd.setCursor(1, 1); {
      lcd.print("XX");
    }
  }

  Serial.print(" ");


  Serial.print("capteur 2: ");
  if (measure2.RangeStatus != 4) {
    Serial.print(measure2.RangeMilliMeter - 30);
    const char CAP2 = (measure2.RangeMilliMeter - 30);
    Serial.print("mm");
  } else {
    Serial.print("trop loin");
    lcd.setCursor(1, 1); {
      lcd.print("XX");
    }
  }
// read captor on lcd// lire les capteurs sur le lcd
  Serial.println();
  lcd.setCursor(0, 0); {
    lcd.print("cap1        cap2");
  }
  if ((measure1.RangeMilliMeter - 30) < 7000) {
    lcd.setCursor(1, 1); {
      lcd.print(measure1.RangeMilliMeter - 30);
    }
  } else {
    lcd.setCursor(1, 1); {
      lcd.print("out");
    }

  }
  if ((measure2.RangeMilliMeter - 30) < 7000) {
    lcd.setCursor(13, 1); {
      lcd.print(measure2.RangeMilliMeter - 30);
    }
  } else {
    lcd.setCursor(13, 1); {
      lcd.print("out");
    }

  }

  delay(10);
}

void setup() {

// release motor // reboot du moteur (je suis pas sur)
  moteur1.run(RELEASE);

  Serial.begin(9600);
  while (! Serial) {
    delay(1);
  }
//define lox use // definire les sens des lox
  pinMode(SHT_LOX1, OUTPUT);
  pinMode(SHT_LOX2, OUTPUT);

  Serial.println("Shutdown pins inited...");

  digitalWrite(SHT_LOX1, LOW);
  digitalWrite(SHT_LOX2, LOW);

  Serial.println("Both in reset mode...(pins are low)");


  Serial.println("Starting...");
  setID();

  pinMode( 33 , INPUT);
  pinMode( 35 , INPUT);
  pinMode( 37 , INPUT);
  pinMode( 39 , INPUT);
  pinMode( 41 , INPUT);
  pinMode( 31 , INPUT);




}


void loop() {
  { //read informations //lire les infos
    read_dual_sensors();
    _ABVAR_1_ManAuto = digitalRead(31) ;
    _ABVAR_2_Avancer = digitalRead(33) ;
    _ABVAR_3_Reculer = digitalRead(35) ;
    _ABVAR_4_Droite = digitalRead(37) ;
    _ABVAR_5_Gauche = digitalRead(39) ;
    _ABVAR_6_STOP = digitalRead(41) ;
    _ABVAR_7_Longeur = analogRead(14) ;
    _ABVAR_8_Largeur = analogRead(15) ;
    _ABVAR_1_test = analogRead(0);
//if manual mode is activate // condition du mode manuel | automatique
    if (( ( _ABVAR_1_ManAuto ) == (LOW) ))
    { read_dual_sensors();
      while ( ( ( _ABVAR_1_ManAuto ) == (LOW) ) )
      { read_dual_sensors();
        _ABVAR_1_test = analogRead(0);
        if (( ( _ABVAR_1_test ) > ( 50 ) ))
        {
          while ( ( ( ( ( _ABVAR_3_Reculer ) == ( LOW ) ) && ( ( _ABVAR_5_Gauche ) == ( LOW ) ) ) && ( ( ( _ABVAR_4_Droite ) == ( LOW ) ) && ( ( _ABVAR_6_STOP ) == ( LOW ) ) && (( ( _ABVAR_1_test ) > ( 50 ) )) ) ) )
          { _ABVAR_1_test = analogRead(0);
            moteur1.run(RELEASE);
            moteur1.run(FORWARD);
            moteur1.setSpeed(200);
            delay(1000);
            read_dual_sensors();
            Serial.println(_ABVAR_1_test);
            _ABVAR_1_ManAuto = digitalRead(31) ;
            _ABVAR_2_Avancer = digitalRead(33) ;
            _ABVAR_3_Reculer = digitalRead(35) ;
            _ABVAR_4_Droite = digitalRead(37) ;
            _ABVAR_5_Gauche = digitalRead(39) ;
            _ABVAR_6_STOP = digitalRead(41) ;
            _ABVAR_7_Longeur = analogRead(14) ;
            _ABVAR_8_Largeur = analogRead(15) ;
          }
        }
        else
        {
          if (( ( _ABVAR_3_Reculer ) == ( HIGH ) ))
          {
            while ( ( ( ( ( _ABVAR_2_Avancer ) == ( LOW ) ) && ( ( _ABVAR_5_Gauche ) == ( LOW ) ) ) && ( ( ( _ABVAR_4_Droite ) == ( LOW ) ) && ( ( _ABVAR_6_STOP ) == ( LOW ) ) ) ) )
            { moteur1.run(BACKWARD);
              read_dual_sensors();
         
            }
          }
          else
          {
            if (( ( _ABVAR_5_Gauche ) == ( HIGH ) ))
            {
              while ( ( ( ( ( _ABVAR_2_Avancer ) == ( LOW ) ) && ( ( _ABVAR_3_Reculer ) == ( LOW ) ) ) && ( ( ( _ABVAR_4_Droite ) == ( LOW ) ) && ( ( _ABVAR_6_STOP ) == ( LOW ) ) ) ) )
              { read_dual_sensors();
           
              }
            }
            else
            {
              if (( ( _ABVAR_4_Droite ) == ( HIGH ) ))
              {
                while ( ( ( ( ( _ABVAR_2_Avancer ) == ( LOW ) ) && ( ( _ABVAR_3_Reculer ) == ( LOW ) ) ) && ( ( ( _ABVAR_5_Gauche ) == ( LOW ) ) && ( ( _ABVAR_6_STOP ) == ( LOW ) ) ) ) )
                { read_dual_sensors();
                  _ABVAR_1_ManAuto = digitalRead(31) ;
                  _ABVAR_2_Avancer = digitalRead(33) ;
                  _ABVAR_3_Reculer = digitalRead(35) ;
                  _ABVAR_4_Droite = digitalRead(37) ;
                  _ABVAR_5_Gauche = digitalRead(39) ;
                  _ABVAR_6_STOP = digitalRead(41) ;
                  _ABVAR_7_Longeur = analogRead(14) ;
                  _ABVAR_8_Largeur = analogRead(15) ;
                }
              }
              else
              {
                if (( ( _ABVAR_6_STOP ) == ( HIGH ) ))
                {
                  while ( ( ( ( ( _ABVAR_2_Avancer ) == ( LOW ) ) && ( ( _ABVAR_3_Reculer ) == ( LOW ) ) ) && ( ( ( _ABVAR_5_Gauche ) == ( LOW ) ) && ( ( _ABVAR_4_Droite ) == ( LOW ) ) ) ) )
                  {
                    _
                    read_dual_sensors();
                  }
                }
              }
            }
          }
        }
      }
    }
    else
    {
      read_dual_sensors();
    }
  }
}

"//define var // definire les variables"

Super commentaire!
Ça change tout.

Evitez les noms de variables commençant par _ (c'est une convention);
(@bricofoy: je vous ai doubnlé; j'ai avancé d'une ligne 8/>= 200
Evitez les majuscules pour les noms de variables (c'est utilisé à petite dose en cAmElcAsE; mais pas comme ça)
Mettez un commentaire général pour dire comment tel moteur est branché , tel capteur est branché

Et, pour les actions de détail, ce qu'il doit faire en réponse à quel stimulus

merci des conseils :slight_smile: , je l'ai ai plus ou moins appliquer mais je suis toujours autant bloquer...

#include "Adafruit_VL53L0X.h"
#include <Wire.h>
#include "rgb_lcd.h"
#include <AFMotor.h>

//define var // definire les variables
bool ManAuto = false ; 
bool Avancer = false ;
bool Reculer = false ;
bool Droite = false ;
bool Gauche = false ;
bool STOP = false ;
int Longeur = 0 ;
int Largeur = 0 ;
int L = 0 ;
int l = 0 ;
int Dgauche = 0 ;
int DDroit = 0 ;
int LargeurRobot = 0 ;
int angle = 0 ;
int a;
int test = 0 ;

// lcd I2C
rgb_lcd lcd;

const int colorR = 0;
const int colorG = 0;
const int colorB = 0;

// define lox //definire les differents variable d'adresse I2C
#define LOX3_ADDRESS 0x29
#define LOX2_ADDRESS 0x30
#define LOX1_ADDRESS 0x31

//define Xshut pin // definire la pin XSHUT
#define SHT_LOX1 7
#define SHT_LOX2 6
#define XSHUT_pin1 22

//define sensors I2C // definire les capteurs I2C
Adafruit_VL53L0X lox1 = Adafruit_VL53L0X();
Adafruit_VL53L0X lox2 = Adafruit_VL53L0X();
Adafruit_VL53L0X lox3 = Adafruit_VL53L0X();

VL53L0X_RangingMeasurementData_t measure1;
VL53L0X_RangingMeasurementData_t measure2;

//define motor //definire les moteurs qui son sur le shiel moteur 
AF_DCMotor moteur1(1);

void setID() {

  //initialisation du lcd
  lcd.begin(16, 2);

  lcd.setRGB(colorR, colorG, colorB);

  lcd.print("initialisation");

  //reset sensors // remettre les capteurs a 0
  lox1.begin(0x29);
  lox2.begin(0x29);
  lox3.begin(0x29);


  pinMode(XSHUT_pin1, OUTPUT);
  lox3.begin(0x30);
  pinMode(XSHUT_pin1, INPUT);
  delay (10) ;
  lox3.begin(0x31);
  analogWrite(52, 255);

  //initialisation des capteurs
  // all reset
  digitalWrite(SHT_LOX1, LOW);
  digitalWrite(SHT_LOX2, LOW);
  delay(10);
  // all unreset
  digitalWrite(SHT_LOX1, HIGH);
  digitalWrite(SHT_LOX2, HIGH);
  delay(10);

  // activating LOX1 and reseting LOX2
  digitalWrite(SHT_LOX1, HIGH);
  digitalWrite(SHT_LOX2, LOW);

  // initing LOX1
  if (!lox1.begin(LOX1_ADDRESS)) {
    Serial.println(F("Failed to boot first VL53L0X"));
    while (1);
  }
  delay(10);

  // activating LOX2
  digitalWrite(SHT_LOX2, HIGH);
  delay(10);

  //initing LOX2
  if (!lox2.begin(LOX2_ADDRESS)) {
    Serial.println(F("Failed to boot second VL53L0X"));
    while (1);
  }
}

void read_dual_sensors() {
// read captor on serial monitor // lire les capteurs sur le moniteur
  lcd.clear();

  lox1.rangingTest(&measure1, false);
  lox2.rangingTest(&measure2, false);

  Serial.print("capteur 1: ");
  if (measure1.RangeStatus != 4) {
    Serial.print(measure1.RangeMilliMeter - 30);
    Serial.print("mm                 ");
  } else {
    Serial.print("trop loin     ");
    lcd.setCursor(1, 1); {
      lcd.print("XX");
    }
  }

  Serial.print(" ");


  Serial.print("capteur 2: ");
  if (measure2.RangeStatus != 4) {
    Serial.print(measure2.RangeMilliMeter - 30);
    const char CAP2 = (measure2.RangeMilliMeter - 30);
    Serial.print("mm");
  } else {
    Serial.print("trop loin");
    lcd.setCursor(1, 1); {
      lcd.print("XX");
    }
  }
// read captor on lcd// lire les capteurs sur le lcd
  Serial.println();
  lcd.setCursor(0, 0); {
    lcd.print("cap1        cap2");
  }
  if ((measure1.RangeMilliMeter - 30) < 7000) {
    lcd.setCursor(1, 1); {
      lcd.print(measure1.RangeMilliMeter - 30);
    }
  } else {
    lcd.setCursor(1, 1); {
      lcd.print("out");
    }

  }
  if ((measure2.RangeMilliMeter - 30) < 7000) {
    lcd.setCursor(13, 1); {
      lcd.print(measure2.RangeMilliMeter - 30);
    }
  } else {
    lcd.setCursor(13, 1); {
      lcd.print("out");
    }

  }

  delay(10);
}

void setup() {

// release motor // reboot du moteur (je suis pas sur)
  moteur1.run(RELEASE);

  Serial.begin(9600);
  while (! Serial) {
    delay(1);
  }
//define lox use // definire les sens des lox
  pinMode(SHT_LOX1, OUTPUT);
  pinMode(SHT_LOX2, OUTPUT);

  Serial.println("Shutdown pins inited...");

  digitalWrite(SHT_LOX1, LOW);
  digitalWrite(SHT_LOX2, LOW);

  Serial.println("Both in reset mode...(pins are low)");


  Serial.println("Starting...");
  setID();

  pinMode( 33 , INPUT);
  pinMode( 35 , INPUT);
  pinMode( 37 , INPUT);
  pinMode( 39 , INPUT);
  pinMode( 41 , INPUT);
  pinMode( 31 , INPUT);




}


void loop() {
  { //read informations //lire les infos
    read_dual_sensors();
    ManAuto = digitalRead(31) ;
    Avancer = digitalRead(33) ;
    Reculer = digitalRead(35) ;
    Droite = digitalRead(37) ;
    Gauche = digitalRead(39) ;
    STOP = digitalRead(41) ;
    Longeur = analogRead(14) ;
    Largeur = analogRead(15) ;
    test = analogRead(0);
//if manual mode is activate // condition du mode manuel | automatique
    if (( ( ManAuto ) == (LOW) ))
    { read_dual_sensors();
      while ( ( ( ManAuto ) == (LOW) ) )
      { read_dual_sensors();
        test = analogRead(0);
        if (( ( test ) > ( 50 ) ))
        {
          while ( ( ( ( ( Reculer ) == ( LOW ) ) && ( ( Gauche ) == ( LOW ) ) ) && ( ( ( Droite ) == ( LOW ) ) && ( ( STOP ) == ( LOW ) ) && (( ( test ) > ( 50 ) )) ) ) )
          { test = analogRead(0);
            moteur1.run(RELEASE);
            moteur1.run(FORWARD);
            moteur1.setSpeed(200);
            delay(1000);
            read_dual_sensors();
            Serial.println(test);
            ManAuto = digitalRead(31) ;
            Avancer = digitalRead(33) ;
            Reculer = digitalRead(35) ;
            Droite = digitalRead(37) ;
            Gauche = digitalRead(39) ;
            STOP = digitalRead(41) ;
            Longeur = analogRead(14) ;
            Largeur = analogRead(15) ;
          }
        }
        else
        {
          if (( ( Reculer ) == ( HIGH ) ))
          {
            while ( ( ( ( ( Avancer ) == ( LOW ) ) && ( ( Gauche ) == ( LOW ) ) ) && ( ( ( Droite ) == ( LOW ) ) && ( ( STOP ) == ( LOW ) ) ) ) )
            { moteur1.run(BACKWARD);
              read_dual_sensors();
              ManAuto = digitalRead(31) ;
              Avancer = digitalRead(33) ;
              Reculer = digitalRead(35) ;
              Droite = digitalRead(37) ;
              Gauche = digitalRead(39) ;
              STOP = digitalRead(41) ;
              Longeur = analogRead(14) ;
              Largeur = analogRead(15) ;
            }
          }
          else
          {
            if (( ( Gauche ) == ( HIGH ) ))
            {
              while ( ( ( ( ( Avancer ) == ( LOW ) ) && ( ( Reculer ) == ( LOW ) ) ) && ( ( ( Droite ) == ( LOW ) ) && ( ( STOP ) == ( LOW ) ) ) ) )
              { read_dual_sensors();
                ManAuto = digitalRead(31) ;
                Avancer = digitalRead(33) ;
                Reculer = digitalRead(35) ;
                Droite = digitalRead(37) ;
                Gauche = digitalRead(39) ;
                STOP = digitalRead(41) ;
                Longeur = analogRead(14) ;
                Largeur = analogRead(15) ;
              }
            }
            else
            {
              if (( ( Droite ) == ( HIGH ) ))
              {
                while ( ( ( ( ( Avancer ) == ( LOW ) ) && ( ( Reculer ) == ( LOW ) ) ) && ( ( ( Gauche ) == ( LOW ) ) && ( ( STOP ) == ( LOW ) ) ) ) )
                { read_dual_sensors();
                  ManAuto = digitalRead(31) ;
                  Avancer = digitalRead(33) ;
                  Reculer = digitalRead(35) ;
                  Droite = digitalRead(37) ;
                  Gauche = digitalRead(39) ;
                  STOP = digitalRead(41) ;
                  Longeur = analogRead(14) ;
                  Largeur = analogRead(15) ;
                }
              }
              else
              {
                if (( ( STOP ) == ( HIGH ) ))
                {
                  while ( ( ( ( ( Avancer ) == ( LOW ) ) && ( ( Reculer ) == ( LOW ) ) ) && ( ( ( Gauche ) == ( LOW ) ) && ( ( Droite ) == ( LOW ) ) ) ) )
                  {
                    ManAuto = digitalRead(31) ;
                    Avancer = digitalRead(33) ;
                    Reculer = digitalRead(35) ;
                    Droite = digitalRead(37) ;
                    Gauche = digitalRead(39) ;
                    STOP = digitalRead(41) ;
                    Longeur = analogRead(14) ;
                    Largeur = analogRead(15) ;
                    read_dual_sensors();
                  }
                }
              }
            }
          }
        }
      }
    }
    else
    {
      read_dual_sensors();
    }
  }
}[/code}

Dans les blocs des tests 'gauche' et 'droite' il n'y a pas d'instruction de type moteur1.run(...) : est-ce normal ?
Il n'y en a pas non plus dans le bloc STOP, mais c'est peut-être normal...?

oui je n'en ai pas besoin pour l'instant je teste mon moteur dans une seule condition, pour savoir si elle marche j'y ai mis un délai.

Mon petit copain koala, il faut que tu nous en dises plus sur le fonctionnement de ton code. Comme dit dbrion06, il est complexe (le code, pas dbrion, quoique... :wink: ) et tes noms de variables ne sont pas explicites. Ca ne donne pas vraiment envie de s'y plonger...

Peux-tu soit le simplifier pour ne conserver qu'une seule configuration de test, soit nous expliquer ce que tu en attends et ce que tu vois lors de l'exécution pour dire qu'il ne fonctionne pas comme prévu ?

Tu as des blocs d'instructions qui apparaissent en plusieurs endroits :

           ManAuto = digitalRead(31) ;
           Avancer = digitalRead(33) ;
           Reculer = digitalRead(35) ;
           Droite = digitalRead(37) ;
           Gauche = digitalRead(39) ;
           STOP = digitalRead(41) ;
           Longeur = analogRead(14) ;
           Largeur = analogRead(15) ;

Fais-en une fonction (avec des variables globales si ce n'est pas le cas déjà, pour simplifier)

Simplifie tes tests, pour les rendre plus faciles à lire :

while ( ( ( ( ( Avancer ) == ( LOW ) ) && ( ( Reculer ) == ( LOW ) ) ) && ( ( ( Gauche ) == ( LOW ) ) && ( ( Droite ) == ( LOW ) ) ) ) )

peut être remplacé par

while (!Avancer && !Reculer && !Gauche && !Droite)

lesept:
... Comme dit dbrion06, il est complexe ...

Bonjour,

lesept tu es gentil, moi je dis que le code est indem***dable et que Hoellp ne s'en sortira pas sans une bonne analyse de ce qu'il veut faire et sans une remise à plat du code.

Oui ça me perdra...

Mais je n'ai rien dit:
mes deux yeux m'ont murmuré que le code était complexe, et, pour lever le doute affreux, j'ai demandé à pmccabe (un logiciel censé mesurer la complexité) son avis:

sur le code du post 7, j'obtiens

pi@raspberrypi:~ $ vi complex.cpp
pi@raspberrypi:~ $ cppcheck complex.cpp
Checking complex.cpp ...
pi@raspberrypi:~ $ pmccabe complex.cpp
5       5       31      52      53      complex.cpp(52): setID
5       5       33      106     60      complex.cpp(106): read_dual_sensors
2       2       18      167     35      complex.cpp(167): setup
29      29      78      204     116     complex.cpp(204): loop
pi@raspberrypi:~ $ pmccabe -v complex.cpp
Modified McCabe Cyclomatic Complexity
|   Traditional McCabe Cyclomatic Complexity
|       |    # Statements in function
|       |        |   First line of function
|       |        |       |   # lines in function
|       |        |       |       |  filename(definition line number):function
|       |        |       |       |           |
5       5       31      52      53      complex.cpp(52): setID
5       5       33      106     60      complex.cpp(106): read_dual_sensors
2       2       18      167     35      complex.cpp(167): setup
29      29      78      204     116     complex.cpp(204): loop

cppcheck indique que c'est du code C++ vraisemblablement compilable
la plus grande fonction (loop) a 116 lignes, difficile à lire (même par un auteur hypergénial, voulant se relire 6 mois après: peut être devra-t-il empiler deux écrans).
la complexité liée à la profondeur des blocs est sujette à controverse, selon c# 4.0 - How does a static Dictionary have cyclomatic complexity? - Stack Overflow, -et autres-on peut déjà s'inquièter quand la complexité est de 27 (vous en êtes à 29) et appeler préventivement au secours...

Pour la beauté du code, j'ai demandé à l'arbitre des élégances, cpplint (un autre paquet Debian, issu des trouvailles de google, qui a une expertise dans ce domaine; il est aussi livré avec SdFat); là, il trouve beaucoup de lignes laides au standard de google (des " ;"; des lignes trop longues, des "{" qui devraient être sur le test (ou la fonction, ou ..) ; des corps de boucle sans {} -ligne 91, ce n'est pas suspect-)
Il faudrait certainement commenter davantage (les exemples d'arduino sont parfaits: pourquoi ne pas s'en inspirer?), créer des fonctions plus petites (l'optimiseur sait "inliner" si besoin) pour pouvoir espèrer se relire et aboutir à un automate plus complexe, tout en restant dépannable.

Merci de vos réponses je vais me mettre au boulot et sortir quelque chose de mieux.

Décris ce que tu veux faire et après une petite analyse, le programme coulera de source.

Bonjour kamill

kamill:
..... le programme coulera de source.

Ah, ah, ah : le source du programme
Ah, ah, ah : Excellent !
;D

Cordialement,
bidouilleelec

voila un truc déjà beaucoup mieux, mais je travail encore dessus, mon moteur ne marche toujours pas :frowning:

#include "Adafruit_VL53L0X.h"
#include <Wire.h>
#include "rgb_lcd.h"
#include <AFMotor.h>

//define var // definire les variables
bool ManAuto = false ;
bool Avancer = false ;
bool Reculer = false ;
bool Droite = false ;
bool Gauche = false ;
bool STOP = false ;
int Longeur = 0 ;
int Largeur = 0 ;
int L = 0 ;
int l = 0 ;
int Dgauche = 0 ;
int DDroit = 0 ;
int LargeurRobot = 0 ;
int angle = 0 ;
int a;
int test = 0 ;

// lcd I2C
rgb_lcd lcd;

const int colorR = 0;
const int colorG = 0;
const int colorB = 0;

// define lox //definire les differents variable d'adresse I2C
#define LOX3_ADDRESS 0x29
#define LOX2_ADDRESS 0x30
#define LOX1_ADDRESS 0x31

//define Xshut pin // definire la pin XSHUT
#define SHT_LOX1 7
#define SHT_LOX2 6
#define XSHUT_pin1 22

//define sensors I2C // definire les capteurs I2C
Adafruit_VL53L0X lox1 = Adafruit_VL53L0X();
Adafruit_VL53L0X lox2 = Adafruit_VL53L0X();
Adafruit_VL53L0X lox3 = Adafruit_VL53L0X();

VL53L0X_RangingMeasurementData_t measure1;
VL53L0X_RangingMeasurementData_t measure2;

//define motor //definire les moteurs qui son sur le shiel moteur
AF_DCMotor moteur1(1);

void setID() {

  //initialisation du lcd
  lcd.begin(16, 2);

  lcd.setRGB(colorR, colorG, colorB);

  lcd.print("initialisation");

  //reset sensors // remettre les capteurs a 0
  lox1.begin(0x29);
  lox2.begin(0x29);
  lox3.begin(0x29);


  pinMode(XSHUT_pin1, OUTPUT);
  lox3.begin(0x30);
  pinMode(XSHUT_pin1, INPUT);
  delay (10) ;
  lox3.begin(0x31);
  analogWrite(52, 255);

  //initialisation des capteurs
  // all reset
  digitalWrite(SHT_LOX1, LOW);
  digitalWrite(SHT_LOX2, LOW);
  delay(10);
  // all unreset
  digitalWrite(SHT_LOX1, HIGH);
  digitalWrite(SHT_LOX2, HIGH);
  delay(10);

  // activating LOX1 and reseting LOX2
  digitalWrite(SHT_LOX1, HIGH);
  digitalWrite(SHT_LOX2, LOW);

  // initing LOX1
  if (!lox1.begin(LOX1_ADDRESS)) {
    Serial.println(F("Failed to boot first VL53L0X"));
    while (1);
  }
  delay(10);

  // activating LOX2
  digitalWrite(SHT_LOX2, HIGH);
  delay(10);

  //initing LOX2
  if (!lox2.begin(LOX2_ADDRESS)) {
    Serial.println(F("Failed to boot second VL53L0X"));
    while (1);
  }
}

void read_dual_sensors() {
  // read captor on serial monitor // lire les capteurs sur le moniteur
  lcd.clear();

  lox1.rangingTest(&measure1, false);
  lox2.rangingTest(&measure2, false);

  Serial.print("capteur 1: ");
  if (measure1.RangeStatus != 4) {
    Serial.print(measure1.RangeMilliMeter - 30);
    Serial.print("mm                ");
    lcd.setCursor(1, 1); {
      lcd.print(measure1.RangeMilliMeter - 30);
    }
  } else {
    Serial.print("trop loin     ");
    lcd.setCursor(1, 1); {
      lcd.print("out");
    }
  }

  Serial.print(" ");


  Serial.print("capteur 2: ");
  if (measure2.RangeStatus != 4) {
    Serial.print(measure2.RangeMilliMeter - 30);
    const char CAP2 = (measure2.RangeMilliMeter - 30);
    Serial.println("mm");
    lcd.setCursor(13, 1); {
      lcd.print(measure2.RangeMilliMeter - 30);
    }
  } else {
    Serial.println("trop loin");
    lcd.setCursor(1, 1); {
      lcd.print("out");
    }
  }
}

void read_information() {
  ManAuto = digitalRead(31) ;
  Avancer = digitalRead(33) ;
  Reculer = digitalRead(35) ;
  Droite = digitalRead(37) ;
  Gauche = digitalRead(39) ;
  STOP = digitalRead(41) ;
  Longeur = analogRead(14) ;
  Largeur = analogRead(15) ;
  test = analogRead(0);
}

// mouvement du robot
void avancer() {
  moteur1.run(FORWARD);
  moteur1.setSpeed(200);
}
void reculer() {
  moteur1.run(BACKWARD);
  moteur1.setSpeed(100);
}
void gauche() {

}
void droite() {

}
void arreter() {

}
void setup() {

  // release motor // reboot du moteur (je suis pas sur)
  moteur1.run(RELEASE);

  Serial.begin(9600);
  while (! Serial) {
    delay(1);
  }
  //define lox use // definire les sens des lox
  pinMode(SHT_LOX1, OUTPUT);
  pinMode(SHT_LOX2, OUTPUT);

  Serial.println("Shutdown pins inited...");

  digitalWrite(SHT_LOX1, LOW);
  digitalWrite(SHT_LOX2, LOW);

  Serial.println("Both in reset mode...(pins are low)");


  Serial.println("Starting...");
  setID();

  pinMode( 33 , INPUT);
  pinMode( 35 , INPUT);
  pinMode( 37 , INPUT);
  pinMode( 39 , INPUT);
  pinMode( 41 , INPUT);
  pinMode( 31 , INPUT);
}

void loop() {
  { //read informations //lire les infos
    read_dual_sensors();
    read_information();

    //if manual mode is activate // condition du mode manuel | automatique
    if  ( !ManAuto ) //mode manuel on
    { read_dual_sensors();
      while  ( !ManAuto )
      { read_dual_sensors();
        read_information();
        if ( ( test ) > ( 50 ) ) //demande d'avancer (simuler par une resistance variable pour le tester)
        { Serial.println("test");
          while ( (!Reculer && !Gauche && !Droite && !STOP) && ( test > ( 50 ) ))
          { avancer();
            read_dual_sensors();
            read_information();
            Serial.println(test);
            delay(1000);
          }
        }
        else
        {
          if  ( Reculer ) //demande de reculer
          { Serial.println("reculer");
            while  (!Avancer && !Gauche && !Droite && !STOP )
              read_dual_sensors();
            read_information();
            reculer();

          }
          else
          {
            if ( Gauche )
            { Serial.println("gauche"); // demande de tourner a gauche 
              while ( !Avancer && !Reculer && !Droite && !STOP )
              { read_dual_sensors();
                read_information();
                gauche();
              }
            }
            else
            {
              if ( Droite )
              { Serial.println("droite"); //demande de tourner a droite
                while ( !Avancer && !Reculer && !Gauche && !STOP )
                { read_dual_sensors();
                  read_information();
                  droite();
                }
              }
              else
              {
                if ( STOP )
                { Serial.println("STOP"); //demande d'arret
                  while (!Avancer && !Reculer && !Gauche && !Droite)
                  {
                    read_information();
                    read_dual_sensors();
                    arreter();
                  }
                }
              }
            }
          }
        }
      }
    }
    else
    {
      read_dual_sensors();
    }
  }
}

Sinon Mon programme conciset a controller un robot de maniére automatique, pour se faire je commance par une partie manuel pour deja avoire des base tout marche separement mais les moteurs ne s'active pas dans la void loop

Ton code est encore un peu complexe. En le lisant je pense que tu n'as pas encore fait la partie automatique, du coup j'ai commenté la dernière partie.

Je l'ai simplifié un peu la loop comme suit :

#include "Adafruit_VL53L0X.h"
#include <Wire.h>
#include "rgb_lcd.h"
#include <AFMotor.h>

//define var // definir les variables
bool ManAuto = false ;
bool Avancer = false ;
bool Reculer = false ;
bool Droite = false ;
bool Gauche = false ;
bool STOP = false ;
int Longeur = 0 ;
int Largeur = 0 ;
int L = 0 ;
int l = 0 ;
int Dgauche = 0 ;
int DDroit = 0 ;
int LargeurRobot = 0 ;
int angle = 0 ;
int a;
int test = 0 ;

// lcd I2C
rgb_lcd lcd;

const int colorR = 0;
const int colorG = 0;
const int colorB = 0;

// define lox //definir les differentes variables d'adresse I2C
#define LOX3_ADDRESS 0x29
#define LOX2_ADDRESS 0x30
#define LOX1_ADDRESS 0x31

//define Xshut pin // definir la pin XSHUT
#define SHT_LOX1 7
#define SHT_LOX2 6
#define XSHUT_pin1 22

//define sensors I2C // definir les capteurs I2C
Adafruit_VL53L0X lox1 = Adafruit_VL53L0X();
Adafruit_VL53L0X lox2 = Adafruit_VL53L0X();
Adafruit_VL53L0X lox3 = Adafruit_VL53L0X();

VL53L0X_RangingMeasurementData_t measure1;
VL53L0X_RangingMeasurementData_t measure2;

//define motor //definir les moteurs qui sont sur le shiel moteur
AF_DCMotor moteur1(1);

void setID() {

  //initialisation du lcd
  lcd.begin(16, 2);

  lcd.setRGB(colorR, colorG, colorB);

  lcd.print("initialisation");

  //reset sensors // remettre les capteurs a 0
  lox1.begin(0x29);
  lox2.begin(0x29);
  lox3.begin(0x29);


  pinMode(XSHUT_pin1, OUTPUT);
  lox3.begin(0x30);
  pinMode(XSHUT_pin1, INPUT);
  delay (10) ;
  lox3.begin(0x31);
  analogWrite(52, 255);

  //initialisation des capteurs
  // all reset
  digitalWrite(SHT_LOX1, LOW);
  digitalWrite(SHT_LOX2, LOW);
  delay(10);
  // all unreset
  digitalWrite(SHT_LOX1, HIGH);
  digitalWrite(SHT_LOX2, HIGH);
  delay(10);

  // activating LOX1 and reseting LOX2
  digitalWrite(SHT_LOX1, HIGH);
  digitalWrite(SHT_LOX2, LOW);

  // initing LOX1
  if (!lox1.begin(LOX1_ADDRESS)) {
    Serial.println(F("Failed to boot first VL53L0X"));
    while (1);
  }
  delay(10);

  // activating LOX2
  digitalWrite(SHT_LOX2, HIGH);
  delay(10);

  //initing LOX2
  if (!lox2.begin(LOX2_ADDRESS)) {
    Serial.println(F("Failed to boot second VL53L0X"));
    while (1);
  }
}

void read_dual_sensors() {
  // read captor on serial monitor // lire les capteurs sur le moniteur
  lcd.clear();

  lox1.rangingTest(&measure1, false);
  lox2.rangingTest(&measure2, false);

  Serial.print("capteur 1: ");
  if (measure1.RangeStatus != 4) {
    Serial.print(measure1.RangeMilliMeter - 30);
    Serial.print("mm                ");
    lcd.setCursor(1, 1); {
      lcd.print(measure1.RangeMilliMeter - 30);
    }
  } else {
    Serial.print("trop loin     ");
    lcd.setCursor(1, 1); {
      lcd.print("out");
    }
  }

  Serial.print(" ");


  Serial.print("capteur 2: ");
  if (measure2.RangeStatus != 4) {
    Serial.print(measure2.RangeMilliMeter - 30);
    const char CAP2 = (measure2.RangeMilliMeter - 30);
    Serial.println("mm");
    lcd.setCursor(13, 1); {
      lcd.print(measure2.RangeMilliMeter - 30);
    }
  } else {
    Serial.println("trop loin");
    lcd.setCursor(1, 1); {
      lcd.print("out");
    }
  }
}

void read_information() {
  ManAuto = digitalRead(31) ;
  Avancer = digitalRead(33) ;
  Reculer = digitalRead(35) ;
  Droite = digitalRead(37) ;
  Gauche = digitalRead(39) ;
  STOP = digitalRead(41) ;
  Longeur = analogRead(14) ;
  Largeur = analogRead(15) ;
  test = analogRead(0);
}

// mouvement du robot
void avancer() {
  moteur1.run(FORWARD);
  moteur1.setSpeed(200);
}
void reculer() {
  moteur1.run(BACKWARD);
  moteur1.setSpeed(100);
}
void gauche() {

}
void droite() {

}
void arreter() {

}
void setup() {

  // release motor // reboot du moteur (je suis pas sur)
  moteur1.run(RELEASE);

  Serial.begin(9600);
  while (! Serial) {
    delay(1);
  }
  //define lox use // definire les sens des lox
  pinMode(SHT_LOX1, OUTPUT);
  pinMode(SHT_LOX2, OUTPUT);

  Serial.println("Shutdown pins inited...");

  digitalWrite(SHT_LOX1, LOW);
  digitalWrite(SHT_LOX2, LOW);

  Serial.println("Both in reset mode...(pins are low)");


  Serial.println("Starting...");
  setID();

  pinMode( 33 , INPUT);
  pinMode( 35 , INPUT);
  pinMode( 37 , INPUT);
  pinMode( 39 , INPUT);
  pinMode( 41 , INPUT);
  pinMode( 31 , INPUT);
}

void loop() {
  //read informations //lire les infos
  read_dual_sensors();
  read_information();

  //if manual mode is activate // condition du mode manuel | automatique
  if  ( !ManAuto ) { //mode manuel on
    if (test > 50) { //demande d'avancer (simuler par une resistance variable pour le tester)
      while ( !Reculer && !Gauche && !Droite && !STOP && test > 50) {
        avancer();
        read_dual_sensors();
        read_information();
        Serial.print("test =");
        Serial.println(test);
        delay(1000);
      }
    } else if  ( Reculer ) { //demande de reculer
      while  (!Avancer && !Gauche && !Droite && !STOP ) {
        Serial.println("reculer");
        read_dual_sensors();
        read_information();
        reculer();
      }
    } else if ( Gauche ) {
      while ( !Avancer && !Reculer && !Droite && !STOP ) {
        Serial.println("gauche"); // demande de tourner a gauche
        read_dual_sensors();
        read_information();
        gauche();
      }
    } else if ( Droite ) {
      while ( !Avancer && !Reculer && !Gauche && !STOP ) {
        Serial.println("droite"); //demande de tourner a droite
        read_dual_sensors();
        read_information();
        droite();
      }
    } else if ( STOP ) {
      while (!Avancer && !Reculer && !Gauche && !Droite) {
        Serial.println("STOP"); //demande d'arret
        read_information();
        read_dual_sensors();
        arreter();
      }
    }
  }
  //  else read_dual_sensors();
}

Notamment, j'ai mis les println dans les while, ce qui permet de mieux suivre le déroulement du code, au prix de plein de choses affichées sur la console.

Tu peux déjà tester ça.
Si ça fonctionne, il est encore possible de le simplifier. En effet à mon avis les while ne servent à rien, et ta loop peut devenir :

void loop() {
  //read informations //lire les infos
  read_dual_sensors();
  read_information();

  //if manual mode is activate // condition du mode manuel | automatique
  if  ( !ManAuto ) { //mode manuel on
    if (test > 50) { //demande d'avancer (simuler par une resistance variable pour le tester)
      if ( !Reculer && !Gauche && !Droite && !STOP && test > 50) {
        avancer();
        Serial.print("test = ");
        Serial.println(test);
        delay(1000);
      }
    } else if  ( Reculer ) { //demande de reculer
      if  (!Avancer && !Gauche && !Droite && !STOP ) {
        Serial.println("reculer");
        reculer();
      }
    } else if ( Gauche ) {
      if ( !Avancer && !Reculer && !Droite && !STOP ) {
        Serial.println("gauche"); // demande de tourner a gauche
        gauche();
      }
    } else if ( Droite ) {
      if ( !Avancer && !Reculer && !Gauche && !STOP ) {
        Serial.println("droite"); //demande de tourner a droite
        droite();
      }
    } else if ( STOP ) {
      if (!Avancer && !Reculer && !Gauche && !Droite) {
        Serial.println("STOP"); //demande d'arret
        arreter();
      }
    }
  }
  //  else read_dual_sensors();
}

A voir...