Problème de bouton fin course

Bonjour à tous

débutant en programmation Arduino

je rencontre un problème dans le développement d'un projet
Ouverture d'un Portail simple battant.

le système se compose de deux boutons poussoir de deux relais d'un moteur et d'une lampe clignotante avertisseur de mouvement.

Lors de la pression sur le 1er bouton la lampe dois clignoter pendant 5 secondes avant la mise en route du moteur le battant se met en mouvement et atteint le 2éme bouton poussoir qui sert de fin de course et dois arrêter le moteur et la lampe.

Mon problème se situe au niveau lorsque je programme le clignotement de la lampe la détection de fin de course n'arrete pas le moteur ni lampe.

/*
le bouton poussoir est connecté au pin 2 pour un mode INPUT_PULLUP

la Led est connectée au pins 4 avec une résistance de 220Ω

*/

//déclaration des variables

int pinBoutonO, pinLed; int pinBoutonF;
int pinRelais;

boolean etatAllumage;
boolean etatFermeture;

void setup()

{

//initialisation des variables

Serial.begin(9600);

pinBoutonO = 3;
pinBoutonF = 2;

pinLed = 4;
pinRelais=13;

etatAllumage=0;
etatFermeture=0;

//définition des modes

pinMode(pinBoutonO, INPUT_PULLUP); pinMode (pinBoutonF,INPUT_PULLUP); pinMode(pinLed, OUTPUT);
pinMode(pinRelais, OUTPUT);
}

void loop()

{

Serial.print(etatAllumage);
Serial.print(etatFermeture);

if (etatAllumage) //on teste si etatAllumage est à 1

{

digitalWrite(pinLed, LOW); //on éteint la LED delay(200);
digitalWrite(pinLed,HIGH);
delay(200); delay(500);
digitalWrite(pinRelais, HIGH);

}

if (pinBoutonF == HIGH)
//else //sinon

if (etatFermeture)
{
digitalWrite(pinRelais, LOW);
digitalWrite(pinLed, LOW); //on éteint la LED

}

//lecture de l'état du bouton et stockage dans etatBouton

boolean etatPinBoutonO = digitalRead(pinBoutonO); boolean etatPinBoutonF = digitalRead(pinBoutonF);

Serial.println(etatPinBoutonO);
Serial.println(etatFermeture);

//test des conditions

if (!etatPinBoutonO)//si bouton appuyé (donc le pin indique 0 car il est en mode INPUT_PULLUP)

{

if (etatAllumage) //si etatAllumage à 1

{

etatAllumage=0; //on le passe à 0

}

else //sinon

{

etatAllumage=1; //on le passe à 1

}
delay(100);

if (!etatPinBoutonF)//si bouton appuyé (donc le pin indique 0 car il est en mode INPUT_PULLUP)

{

if (etatFermeture) //si etatAllumage à 1

{

etatFermeture=0; //on le passe à 0

}

else //sinon

{

etatFermeture =1; //on le passe à 1

}
delay(100);

}

}
}

Merci de m' aider

bien à vous

moustique56

bouton poussoir.jpg

il faudrait commencer par indenter ton code correctement (appuie sur control+T dans l'éditeur ) car là c'est difficile à lire.

Mettre ton code entre balises code aussi ce serait bien

ensuite tu fais toutes tes temporisations avec delay(), c'est une mauvaise idée car là il peut se passer n'importe quoi sur tes entrées ça ne sera pas pris en compte avant la fin du delay() qui est en cours

ça se prêterait bien à une programmation par machines à états ton projet, voir ici, et éventuellement ici