A function-definition is not allowed here before '{' token?

je fais une robot avec une carte arduino et j'ai programmé avec sans connaitre comment le faire et en trouvant des bribe de code sur internet ceci :

#define CapteurGauche A0
#define CapteurGauche A1
#define CapteurUltrason A2

#define borneENA 5 //Allumer moteur gauche
#define borneIN1 10 //avancer moteur gauche
#define borneIN2 8 //reculer moteur gauche
#define borneENB 6 //Allumer moteur droit
#define borneIN3 11 //avancer moteur droit
#define borneIN4 9 //reculer moteur droit

const byte TRIGGER_PIN = A2; // Broche TRIGGER
const byte ECHO_PIN = A2; // Broche ECHO

/* 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() {

void avancer() {
// Configuration du L298N en "marche avant", pour le moteur connecté au pont A. Selon sa table de vérité, il faut que :
digitalWrite(borneIN2, LOW); reculer la roue gauche
digitalWrite(borneIN1, HIGH); avancer la roue gauche
digitalWrite(borneIN4, LOW); reculer la roue droite
digitalWrite(borneIN3, HIGH); avancer la roue droite
// Et on lance le moteur (branché sur le pont A du L298N)
delay(800);
digitalWrite(borneENA, 1); // Active l'alimentation du moteur 1
digitalWrite(borneENB, 1); // Active l'alimentation du moteur 1
delay(330);

digitalWrite(borneENB, LOW);
digitalWrite(borneENA, LOW);
delay(10);
}

void arreter() {

digitalWrite(borneIN2, LOW); reculer la roue gauche
digitalWrite(borneIN1, LOW); avancer la roue gauche
digitalWrite(borneIN4, LOW); reculer la roue droite
digitalWrite(borneIN3, LOW);

digitalWrite(borneENB, LOW);
digitalWrite(borneENA, LOW);

}

pinMode(borneENA, OUTPUT);
pinMode(borneIN1, OUTPUT);
pinMode(borneIN2, OUTPUT);
pinMode(borneIN4, OUTPUT);
pinMode(borneIN3, OUTPUT);
pinMode(borneENB, OUTPUT);

/* 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);
}

/** 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;

if((distance_mm = measure / 2.0 * SOUND_SPEED)> 150) {

 avancer()

}
else if((distance_mm = measure / 2.0 * SOUND_SPEED)< 50) {

 arret()

}

Le problème est que quand je vérifie mon programme avec le logicielle arduino il me dis "a function-definition is not allowed here before '{' token" Merci de bien vouloir m'aider svp

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone

Il est urgent de lire les bonnes pratiques du forum

Juste en gros car ton programme ne donne pas envie de le lire :

  • Lorsque tu mets des commentaires, il faut les faire précéder par //
  • Lorsque tu appelles une fonction il faut mettre le ; à la fin
  • la fonction arret() n’existe pas car arret() et différent de arreter()
  • la structure de ton setup n'est pas bonne
    Il est impératif de revoir les bases :wink:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.