Oui, c'est toi qui décide de ce que font les boutons en fonction de l'état dans lequel tu te trouve.
Je ne vois pas sur quel point technique tu bloque.
Peut tu donner plus d'information sur ce que tu comprends pas ou ce qui bloque dans ton programme.
Je ne bloque pas mais je voulais être sure que c'était possible.
Car il faut que je rajoute pas mal de lignes dans le code juste pour cette machine à état et vu que je suis novice je me lance pas avant d'avoir un avis car je vais finir par me perdre dans mon code.
Merci pour la réponse, maintenant je vais pouvoir préparer la mise en place de cette machine PARAMETRE
Juste en lisant les noms que tu donnes à tes états:
{ARRET, VEILLE, MANUEL, JOUR, NUIT} ça ressemble effectivement à des états, c-à-d des fonctionnements différents selon l'état en cours,
{TEMPO, SEUIL, SEUIL-JOUR, SEUIL-NUIT} ça par contre ça ne ressemble pas à des états, on dirait plus le nom de paramètres.
Alors peut-être TEMPO est bien un état dans lequel tu règles une temporisation, pareil pour SEUIL tu règles un seuil - tout ça avec les mêmes boutons, donc changer d'état c'est changer le rôles des boutons (ils agissent sur des paramètres différents).
Mais attention, d'après les noms, que ce ne soient pas juste des noms de paramètres.
Ce que je veux dire, ce que quand on veut créer une machine à états, il faut que les états soient vraiment des états c-à-d une liste de situations dans lesquelles le système va se comporter de façon différente. Pour la seconde liste d'états, j'aurais choisi les noms REGLAGE_TEMPO, REGLAGE_SEUIL, etc c'est plus long mais plus explicite.
En résumé sois sûr de bien discerner ce qui est état de ce qui est transition, événement, valeur, fonction ou autres. Un état, ça persiste. Jusqu'à ce qu'un événement cause un changement d'état.
Oui c'est vrai qu'utiliser réglage_x sera plus lisible.
Pour passer le programme en paramètre donc machine à état PARAMÈTRE, ça sera sur le déclenchement d'un interrupteur ON/OFF et je pensais utiliser une variable qui passe a 1 lorsque l'interrupteur est ON pour bloquer la machine à état MODE.
En général si une machine à état s'arrête pour laisser une autre se mettre en route.
C'est bien que tu as une seul machine à état.
Si par contre pendant que tu es entrain de modifier tes paramètres, tu peux changer d'état de la première, alors effectivement il te faut deux machines à état et bien passer dans les deux machines.
Alors si la machine à état PARAMÈTRE est active, il faut que la machine à état MODE soit off .
La machine PARAMÈTRE c'est pour permettre d'ajuster les réglages pour optimiser le fonctionnement.
Pour moi la modif des paramètres est un état de la machine globale sauf si la machine globale doit faire des trucs asynchrones ou peut changer d’état pendant qu’on joue avec les paramètres
D'accord avec JML, on peut concevoir que les changement de paramètres se fassent pendant que la machine fonctionne, sans perturber son état ARRET/VEILLE.MANUEL etc
Bon je suis entrain de voir pour mette les nouveau paramètre, mais en réfléchissant je me dis que si je modifie un para avec les boutons de type : int seuil = 50; qui est donc déclarer dans le global , si il y a une coupure de courant ou reboot de l'esp32 la variable va reprendre sa valeur qui est dans le global ?
Si vous voulez que les préférences soient sauvegardées, il faut alors les mettre en mémoire non volatile. Ma La bibliothèque préférence fait ça très bien sur ESP 32
Oui c'est ce que j'ai trouvé en cherchant, je vais voir si c'est difficile a mettre en place et si j'ai pas trop de modif a faire dans mon code actuel qui est fonctionnel.