Merci Mike pour ton retour, au final il ne manque plus qu'une entrée numérique (je pense utiliser une borne non utilisée du shield).
Par contre je galère pour gérer tout ces capteurs , car il faut gérer tout ces valeurs analogiques mini max , je m'y perds :kez_13:
Déjà est-ce que j'utilise la bonne méthode en utilisant des if else pour tout mes cas de figure avec mes capteurs ?
// Capteur de couleur, branché sur la broche analogique 0
const int CapteurDroite2 = A5;
const int CapteurDroite1 = A4;
const int CapteurMillieuDroite = A3;
const int CapteurMillieuGauche = A2;
const int CapteurGauche1 = A1;
// variable pour stocker la valeur lue après conversion
int valeurLue1;
int valeurLue2;
int valeurLue3;
int valeurLue4;
int valeurLue5;
// Variable de référence
int sensorValueDroite2 = 0; // the sensor value
int sensorMinDroite2 = 1023; // minimum sensor value
int sensorMaxDroite2 = 0; // maximum sensor value
int sensorValueDroite1 = 0; // the sensor value
int sensorMinDroite1 = 1023; // minimum sensor value
int sensorMaxDroite1 = 0; // maximum sensor value
int sensorValueMillieuDroite = 0; // the sensor value
int sensorMinMillieuDroite = 1023; // minimum sensor value
int sensorMaxMillieuDroite = 0; // maximum sensor value
int sensorValueMillieuGauche = 0; // the sensor value
int sensorMinMillieuGauche = 1023; // minimum sensor value
int sensorMaxMillieuGauche = 0; // maximum sensor value
int sensorValueGauche1 = 0; // the sensor value
int sensorMinGauche1 = 1023; // minimum sensor value
int sensorMaxGauche1 = 0; // maximum sensor value
//Bibliotheque moteur
#include <AFMotor.h>
AF_DCMotor motorA(2, MOTOR12_64KHZ);
//Bibliotheque servos
#include <Servo.h>
Servo Direction;
void setup()
{
// Comunication serie
Serial.begin(9600);
// Moteur voiture
motorA.setSpeed(150); // vitesse 255 max
//Servos moteur de direction
Direction.attach(10, 1230, 1500);
// turn on LED to signal the start of the calibration period:
// calibrate during the first five seconds
while (millis() < 5000) {
sensorValueDroite2 = analogRead(CapteurDroite2);
sensorValueDroite1 = analogRead(CapteurDroite1);
sensorValueMillieuDroite = analogRead(CapteurMillieuDroite);
sensorValueMillieuGauche = analogRead(CapteurMillieuGauche);
sensorValueGauche1 = analogRead(CapteurGauche1);
// record the Droite sensor value
if (sensorValueDroite2 > sensorMaxDroite2) {
sensorMaxDroite2 = sensorValueDroite2;
}
// record the minimum sensor value
if (sensorValueDroite2 < sensorMinDroite2) {
sensorMinDroite2 = sensorValueDroite2;
}
// record the Droite sensor value
if (sensorValueDroite1 > sensorMaxDroite1) {
sensorMaxDroite1 = sensorValueDroite1;
}
// record the minimum sensor value
if (sensorValueDroite1 < sensorMinDroite1) {
sensorMinDroite1 = sensorValueDroite1;
}
// record the maximum sensor value
if (sensorValueMillieuDroite > sensorMaxMillieuDroite) {
sensorMaxMillieuDroite = sensorValueMillieuDroite;
}
// record the minimum sensor value
if (sensorValueMillieuDroite < sensorMinMillieuDroite) {
sensorMinMillieuDroite = sensorValueMillieuDroite;
}
// record the maximum sensor value
if (sensorValueMillieuGauche > sensorMaxMillieuGauche) {
sensorMaxMillieuGauche = sensorValueMillieuGauche;
}
// record the minimum sensor value
if (sensorValueMillieuGauche < sensorMinMillieuGauche) {
sensorMinMillieuGauche = sensorValueMillieuGauche;
}
// record the maximum sensor value
if (sensorValueGauche1 > sensorMaxGauche1) {
sensorMaxGauche1 = sensorValueGauche1;
}
// record the minimum sensor value
if (sensorValueGauche1 < sensorMinGauche1) {
sensorMinGauche1 = sensorValueGauche1;
}
}
// signal the end of the calibration period
}
void loop()
{
Serial.print("valeurLue2 = ");
Serial.println(valeurLue2);
Serial.print("valeurLue3 = ");
Serial.println(valeurLue3);
Serial.println();
delay(1);
// on convertit en nombre binaire la tension lue en sortie du potentiomètre
valeurLue5 = analogRead(CapteurDroite2);
valeurLue4 = analogRead(CapteurDroite1);
valeurLue3 = analogRead(CapteurMillieuDroite);
valeurLue2 = analogRead(CapteurMillieuGauche);
valeurLue1 = analogRead(CapteurGauche1);
// Marche avant
if (valeurLue3 > sensorMinMillieuDroite && valeurLue3 < sensorMaxMillieuDroite && valeurLue2 > sensorMinMillieuGauche && valeurLue2 < sensorMaxMillieuGauche) {
Direction.write(90);
motorA.run(FORWARD);
}
else if ( valeurLue3 < sensorMinMillieuDroite) {
Direction.write(87);
motorA.run(FORWARD);
}
// Virage droite
else if ( valeurLue3 < sensorMinMillieuDroite || valeurLue4 > sensorMaxDroite1 ) {
Direction.write(87);
motorA.run(FORWARD);
}
// Virage gauche
else if ( valeurLue2 < sensorMinMillieuGauche) {
Direction.write(93);
motorA.run(FORWARD);
}
else if ( valeurLue2 < sensorMinMillieuGauche || valeurLue1 > sensorMaxGauche1) {
Direction.write(85);
motorA.run(FORWARD);
}
}