Merci.
Le nom de ma variable est sous forme d'affirmation (assez parlant) et les valeurs me semble pas devoir évoluer, je resterais donc avec.
Je garde le post sous le coude, sur que ça m'aidera à optimiser certaine chose !
Merci.
Le nom de ma variable est sous forme d'affirmation (assez parlant) et les valeurs me semble pas devoir évoluer, je resterais donc avec.
Je garde le post sous le coude, sur que ça m'aidera à optimiser certaine chose !
oui un if dans ce cas là semble bien. Optimisez la lisibilité, vous n'êtes sans doute pas à quelques micro-secondes près
A noter une librairie qui pourrait en intéresser certains
Plutôt bien fichu. Le développeur est réactif en cas de problème.
Avec les ESP il y a possibilité de monter un serveur et de visualiser par un graphique dynamique l'état de l'automate dans un navigateur internet (voir dans les exemples)
le joiur où tu ajouteras un 3ème état à ton système, tu seras contant d'avoir choisi l'énum et le switch/case ![]()
Merci pour ce tuto,il m'aidera surement dans mon projet!!
Merci JML pour ce tuto fort instructif!
Bonjour, je viens de m'intéressé à ton forum, c'est vraiment super génial et ça colle à ce que je voudrais faire, mais question, pour ton time out? ici si on commence à appuyer sur un bouton, la Led 1 s'allume, et qu'on attend par exemple 13 secondes pour rappuyer et allumer la deuxième Led, là le système attendra uniquement 2 secondes avant de s'éteindre, comment réinitialiser ce timer à 15 secondes après?
Crée une variable time exemple: int time;
et écrire: time = millis(); après l'appuis du bouton? je vois pas comment bien le faire
si on met à jour le chrono on repart pour 15 secondes
et dans ce cas faudrait le réarmer à l'appuie du bouton c'est ça? peut on le caler avant la ligne (switch case) de la void() simple clic ou doubleclic? un pe ucomme ça:
void simpleclick(){
time = millis();
switch (etatCourant) {
case REPOS: // on était au repos et on a un appui, on allume la bleu
digitalWrite(pinLedBleu, HIGH); // LED bleu alimentée
etatCourant = ETAT_B; // on note le nouvel état de notre système
break;
case ETAT_B: // on était led bleu allumée et on a un appui, on allume la verte
digitalWrite(pinLedVerte, HIGH); // LED verte alimentée
etatCourant = ETAT_BV;// on note le nouvel état de notre système
break;
case ETAT_BV: // vert et verte allumées, on a un appui, on allume la jaunee
digitalWrite(pinLedJaune, HIGH); // LED jaune alimentée
etatCourant = ETAT_BVJ;// on note le nouvel état de notre système
break;
case ETAT_BVJ:// vert, jaune et jaune allumées, on a un appui, on allume la rouge
digitalWrite(pinLedRouge, HIGH); // LED rouge alimentée
etatCourant = ETAT_BVJR;// on note le nouvel état de notre système
break;
case ETAT_BVJR: // tout était allumé, on a un appui, on retourne au repos
mettreAuRepos(); // on retourne à l'état initial
break;
}
}
(mes Leds sont différentes ne t'en fais pas)
si on le met ici ça passe?
je ne suis pas sûr de comprendre
le code de mon tuto comprend la ligne
chrono = millis(); // on vient d'avoir une action donc on ré-arme notre chronomètre
à la fin de la fonction simpleclick() ou doubleclick()
ça veut dire qu'à chaque appui on repart pour TimeOut millisecondes de délai pour que la partie qui est dans la loop() se déclenche
Donc quand vous dites
non, ce n'est pas le cas. Un appui sur le bouton relance le compteur
effectivement c'est due à une erreur de ma part, mais sinon bravo pour ce super tutos
2 posts were split to a new topic: Question application Tuto machine à états de @J-M-L