IHM ? MAE ? Késaco ?
Nous allons voir ici comment mettre en œuvre une interface homme-machine (IHM) à l’aide d’une machine à états (MAE). La solution est implémentée dans un Arduino Uno.
Dans nos projets et mini-projets de BTS SN, nous avons souvent besoin de mettre en œuvre des interfaces homme-machine simples. Bien souvent, on utilise un petit écran LCD avec deux lignes et quelques boutons-poussoirs.
Pour bien gérer les différents menus et la navigation entre ceux-ci, rien de mieux qu’une machine à états ! C’est une méthode rigoureuse et efficace.
Ici nous allons le mettre en œuvre sur une carte Arduino, mais la méthode est transposable à n’importe quelle autre plateforme ou microcontrôleur.
Un minuteur Arduino
Au cours de ce TP, nous allons réaliser un minuteur en utilisant un Arduino et un shield LCD-RGB Adafruit. Cette carte comprend un afficheur 2 lignes de 16 caractères et 6 boutons poussoirs (←;↓;↑;→;Sélection; et un bouton Reset).
![](https://i0.wp.com/louisreynier.com/wp-content/uploads/2022/10/CompteARebours-1.jpg?resize=402%2C243&ssl=1)
Dans ce TP, nous allons implémenter les menus d’affichage de ce minuteur. Ces menus s’enchainent selon le diagramme d’état suivant.
![](https://i0.wp.com/louisreynier.com/wp-content/uploads/2022/10/MAE_Chrono_complet.drawio.png?resize=676%2C289&ssl=1)
Le codage se fait en utilisant une structure switch – case. Le switch se fait sur la variable d’état.
Le document complet est ici :
En bonus, les étudiants peuvent coder le minuteur complet, mais c’est un peu plus long. Et ça fonctionne !
![C'est fini](https://i0.wp.com/louisreynier.com/wp-content/uploads/2022/10/CestFiniMAE.jpg?resize=434%2C286&ssl=1)
Et qui on est, hein ?