Bonjour Pierre,
Voici mon analyse, mais ne pouvant tester mes idées en réel, ça vaut ce que ça vaut...
Voici ton code :
if(etatZonePN == true) {
digitalWrite (LED_BUILTIN, HIGH); // allume LED de controle de la zone PN
feuPN.startBlink(); // commence le clignotement
digitalWrite (sonPN, HIGH);
if(millis() > topAttente + temporisationFermeture) {
barriere1.goTo(positionFermeeBarriere1);
barriere2.goTo(positionFermeeBarriere2);
}
topAttente = millis();
} // fin du test sur etat de la Zone du PN -> true
Et voici le mien :
if(etatZonePN == true) {
if(etatZonePN != old_etatZonePN) {
topAttente = millis(); // prend un top d'entree dans zone PN
old_etatZonePN = etatZonePN;
} // fin du deuxieme if
digitalWrite (LED_BUILTIN, HIGH); // allume LED de controle de la zone PN
feuPN.startBlink(); // commence le clignotement
// fermeture barriere après attente
if(millis() - topAttente > delaiFermeture) {
if(posServo < posFerme) {
posServo = posServo + 1;
servo1.write(posServo);
servo2.write(posServo);
delay(speedServo);
} // fin du test sur position des servos
} // fin du test sur delai avant fermeture
} // fin du test sur etat de la Zone du PN -> true
Pour ma part, avec des détecteurs ponctuels comme des ILS, je suis obligé (pour éviter des événements successifs et identiques) de comparer l'état de la zone avec son état antérieur et je n'agis que s'il y a changement d'état. Tu utilises des détecteurs d'occupation mais hélas (selon moi), tu les utilises comme des détecteurs ponctuels. Donc cela marchera si tu colles au plus près à ce que j'ai publié. Et ce que tu as écrit n'est pas tout à fait la même chose.
Voyons maintenant la variable topAttente. Dans mon code, je la réinitialise dès le début de la manipulation des barrièreS. Toi, tu le fais à la fin et pour un étatZonePN libre, tu ne le fais pas. Peut-être que le problème vient de là, la variable n'étant pas réinitialisée, la condition est toujours fausse et rien ne se passe. Tu peux vérifier cela en affichant cette variable sur le moniteur.
Pourrais-tu m'envoyer le programme SANS la bibliothèque SMS que je puisse comparer et d'ailleurs, est-ce que cela fonctionnait avec un retard à la fermeture ?
Encore une fois, ce n'est pas très facile pour moi de te donner un avis pertinent. Mais tu peux de ton côté faire les tests jusqu'à ce qu'on en sache plus.
Ne te décourage pas et bonne journée.