je pige pas du tout.
ce que je t'ai donné en sketch fonctionne impec.
j'ai shunté ton potar en mettant une valeur en dur dans le sketch.
en plus c'est non bloquant, puisque ca boucle dans le loop.
par contre, tant que le timer pour la led rouge est pas a zero, il boucle sur le while.
après tout est mis à zero par timerledverte = 0;
le sketch fait quoi?
il détecte si passage ou non devant le détecteur
si rien, il regarde si le timer est à zero via le void testledrouge() appelé dans le loop
si detection
led verte allumée 2s
timerledverte = millis(); pour récupérer un temps
on rajoute pour la led rouge le XXX millisecondes du potar factice mesure = 1 potard; = mesure*1000;
du coup, dans le loop ca va allez voir si les conditions sont réunies dans le void testledrouge
si le timer est < a millis(), on fait rien
si le timer est > millis(), on allume la led rouge pendant le temps du potard
si potard-- est à zero
on met sur off la led rouge
on met a zero le timerledverte
et on repart sur une nouvelle détection
c'est bien ce que tu voulais au départ? non ?
maintenant, si tu veux que lorsque le potard-- n'est pas encore à zero, on puisse faire une nouvelle détection, il suffit de mettre une verif de détection dans le while et si détection, on break pour ressortir de la boucle et on réécrit le timerledverte par la même occasion.
donc ca repart dans le loop, vérification et on retombe dans le void testledrouge pour une nouvelle boucle.
voila ce que ca donne dans le serial
initialisation PIR
Lecture mesure1 : 1.00Lecture potar1 : 1000
Testled rouge
etat led verte :0
Lecture mesure1 : 1.00Lecture potar1 : 1000
Testled rouge
etat led verte :0
Piece detecte
timerledverte : 23896
Testled rouge
etat led verte :1
timerledrouge : 24879
milli : 25969
999
998
997
996
995
994
......
4
3
2
1
0
Lecture mesure1 : 1.00Lecture potar1 : 1000
Testled rouge
etat led verte :0
Lecture mesure1 : 1.00Lecture potar1 : 1000
Testled rouge
etat led verte :0