Programme arduino

Bonjour,
Je réalise notre projet de terminal s si sur le chariot de golf, j'ai pour but que le chariot suive le joueur de golf. Pour cela j'ai réalisé une maquette où il me faut un programme arduino où je veux utiliser 3 capteurs à ultrason, mais je ne m'y connais pas en arduino donc j'aurais besoin de votre aide pour le commencer.
Pour le moment, nous avons fait un programme avec un potentiomètre et un moteur, on arrive à gérer la puissance du moteur avec le potentiomètre à l'aide d'une plaque Arduino Uno et d'un shield motor, on a utilisé le principe PWM au quel on a joint un potentiomètre.
Maintenant on souhaiterais que le robot avance tout seul, et lorsque qu'il se trouve à moins de 20cm d'un obstacle détecté par le capteur ultrason Hc sr04 il s'arrete on a crée un programme qui semble correcte mais qui ne fonction pas.
On aimerait donc de l'aide pour corriger la ou les erreurs que l'on ne trouve pas.

/* Constantes pour les broches */
const byte TRIGGER_PIN = 2; // Broche TRIGGER
const byte ECHO_PIN = 3; // Broche ECHO
int F = 0;
long distance_cm = 0;

/* Constantes pour le timeout */
const unsigned long MEASURE_TIMEOUT = 25000UL; // 25ms = ~8m à 340m/s

/* Vitesse du son dans l'air en mm/us */
const float SOUND_SPEED = 340.0 / 1000;

/** Fonction setup() */
void setup() {

/* Initialise le port série */
Serial.begin(115200);

/* Initialise les broches */
pinMode(TRIGGER_PIN, OUTPUT);
digitalWrite(TRIGGER_PIN, LOW); // La broche TRIGGER doit être à LOW au repos
pinMode(ECHO_PIN, INPUT);
pinMode(12, OUTPUT); //Initiates Motor Channel A pin
pinMode(9, OUTPUT); //Initiates Brake Channel A pin

digitalWrite(12, HIGH); //Establishes forward direction of Channel A
digitalWrite(9, LOW); //Disengage the Brake for Channel A
analogWrite(3, 0); //Spins the motor on Channel A at full speed
}

/** Fonction loop() */
void loop() {

/* 1. Lance une mesure de distance en envoyant une impulsion HIGH de 10µs sur la broche TRIGGER */
digitalWrite(TRIGGER_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER_PIN, LOW);

/* 2. Mesure le temps entre l'envoi de l'impulsion ultrasonique et son écho (si il existe) */
long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT);

/* 3. Calcul la distance à partir du temps mesuré */
float distance_mm = measure / 2.0 * SOUND_SPEED;

/* Affiche les résultats en mm, cm et m */
Serial.print(F("Distance: "));
Serial.print(distance_mm);
Serial.print(F("mm ("));
Serial.print(distance_mm / 10.0, 2);
Serial.print(F("cm, "));

if (40 > F > 20){
analogWrite(3, 255);
digitalWrite (13,1);

}
else
{
analogWrite(3,0);
digitalWrite (13,0);
}
/* Délai d'attente pour éviter d'afficher trop de résultats à la seconde */
delay(500);
}

De plus on aimerait donc faire une maquette avec 3 capteurs ultrason pour que le robot puisse tourner au cas ou le golfeur tournerait.

Je cite :
Un programme qui semble corect mais qui ne fonctionne pas

Comment veut tu qu'on puisse répondre avec ces informations ?
Explique en quoi il ne fonctionne pas.

Conseil : quand tu essayes quelque chose de nouveau pour toi, teste sur des petits programmes uniquement fait pour valider cette action.
Tu verra qu'au final tu ira plus vite que si tu reste dans ton "gros" programme.

PS édite ton premier message et met le code entre balise code, un certain nombre de membres utilise beaucoup les smartphones et pour que le code soit lisible les balises code sont indipensables. Les balises code sont aussi indispensables pour respecter les indentations.

Après avoir mis les balises de code (SVP) Faut au moins revoir cette partie làif (40 > F > 20){

Bonsoir,

Ta constante F prend la valeur 0 au départ mais aucune ligne de code ne lui permet d’évoluer donc ta conditionnelle (if) ne sert à rien.
De toute façon, ton code ne doit même pas compiler vu que

Serial.print(F("Distance: "));

n’est pas interprétable.

Comme te l’a expliqué 68tjs, il faut avoir de la méthode. Commence par tester de tous petits bouts de code, par exemple afficher dans la console les données de ton capteur ultrason. Si ça ne marche pas :

  • soit ça ne compile pas et l’ide t’indique à quel endroit ton code est incorrect
  • soit ça compile mais ça ne fait pas ce que tu souhaites et il faut revoir la logique
    (sous réserve bien sûr qu’il n’y ait pas de problème de câblage)
    Dans tous les cas, soit précis dans tes indications quand tu demandes de l’aide

Pire que ça - l’éctiture de la condition sous cette forme c’est du grand n’importe quoi...