exit status 1 '_delay' was not declared in this scope

Bonsoir,
Je suis en pleine réalisation d’une maquette “barrière de parking”

Je réalise mon programme au départ avec Mblock en graphique, tous fonctionne.

Lorsque je copie dans l’IDE arduino et que je compile j’ai une erreur.

/* Programme créer par M. Cartier le 12/12/2017
http://creativecommons.fr/licences/
NC; BY; ND ; SA
Pour tous problèmes contacter par email: cartiergwenael@gmail.com en français

BARRIERE DE PARKING

Le montage:
Un servomoteur branché sur les broches 3, +5v et GND
Bouton poussoir branché sur la broche 5 et +5V
1 led verte sur les broches 4 et +5v
1 led rouge sur les broches 2 et +5v
*/

//Création des bribliothèques
#include <Arduino.h>
#include <Wire.h>
#include <SoftwareSerial.h>
#include <Servo.h>
// définition des angles de radiant à degrée
double angle_rad = PI / 180.0;
double angle_deg = 180.0 / PI;
Servo servo_3;
void setup() {
// Initialisation des sorties
servo_3.attach(3);
pinMode(2, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, INPUT);
}
void loop() {
servo_3.write(45); // Position barrière horizontale
digitalWrite(2, 1); // Led verte éteinte
digitalWrite(4, 1); // Led rouge éteinte
if (((digitalRead(5)) == (0))) { //Si le bouton poussoir sortie 5 est appuyé
//Début de la séquence d’ouverture:
servo_3.write(120); // ouvrir la barrière
for(int i=0;i<20;++i //répéter 20 fois

) digitalWrite(4, 1) ; // Led verte éteinte
_delay(0,2);
digitalWrite(4, 0) ; // Led verte allumé
_delay(0,2);
}
{ digitalWrite(4, 1); // Led verte éteinte
_delay(4); //Attendre 4sec
}
//Début de la séquence de fermeture:
servo_3.write(45); // fermer la barrière
for(int i=0;i<20;++i //répéter 20 fois

) digitalWrite(2, 1) ; // Led rouge éteinte
_delay(0,2);
digitalWrite(2, 0) ; // Led rouge allumé
_delay(0,2);

{ digitalWrite(2, 1); // Led rouge éteinte
_delay(4); //Attendre 4sec
}
}
_loop();
}
// définition des durées milli secondes en secondes
void _delay(float seconds){
long endTime = millis() + seconds * 1000;
while(millis() < endTime)_loop();
}
void _loop() {
}

Erreur:
exit status 1
‘_delay’ was not declared in this scope

Pouvez-vous m’aider s’il vous plait c’est ma première dans me monde de Arduino

Merci de lire les posts épinglés en haut du forum pour savoir comment poster ici

——

Je ne sais pas qui a codé quoi là,dedans mais gérer millis() avec des long au lieu d’unsigned long c’est délirant… c’est ça que génère vraiment Mblock? Ou vous avez une version qui date de 10 ans?

Essayez de déplacer

// définition des durées milli secondes en secondes
void _delay(float seconds){
    long endTime = millis() + seconds * 1000;
    while(millis() < endTime)_loop();
}
void _loop() {
}

au début du programme, juste avant le void setup() et changez en

....
Servo servo_3;
//================ insérer ici ============
void _loop() {}

// définition des durées milli secondes en secondes
void _delay(float seconds){
    unsigned long duree = seconds * 1000;
    unsigned long t0 = millis();
    while(millis() - t0 < duree) _loop();
}
//===========================

void setup()....

Mais c’est du code de cochon, vaudrait mieux passer un peu de temps à apprendre à coder pour de vrai à mon avis