pour simplifier le code, prenez des bibliothèques pour vos composants:
- la bibliothèque encoder pour l'encodeur rotatif
- N'importe quelle bibliothèque bouton (OneButton, SimpleBouton, Bounce2, EasyRun, ...)
il vous faut quelques variables:
un tableau de caractères
char message[30]; // de la bonne taille, prévoir 1 case de plus à la fin
la position en cours dans le tableau
byte position = 0; // initialisée à 0
un booléen pour dire si le message est prêt
bool messageDisponible = false;
un booléen éventuellement pour dire si vous êtes en mode édition
bool editionEnCours = false;
----
Ensuite le code est assez simple sous forme de machine a état avec 2 évènements:
si l'édition est en cours, on suppose que le curseur est au bon endroit sur l'écran et vous testez s'il y a eu:
- une action sur l'encodeur rotatif, vous affichez à la position courante la lettre correspondant à l'ancienne lettre + ou - le nombre de clicks de l'encodeur
- une action sur le bouton de l'encodeur et vous validez la lettre puis déplacez la position courante et affichez un A par exemple qui devient la lettre en cours
- un double click sur le bouton (géré aussi par pas mal de bibliothèques) pourrait servir de validation. Dans ce cas vous validez la lettre en cours et rajoutez un caractère nul '\0' à la fin et passez messageDisponible à vrai.
Attention à ne pas dépasser la taille du tableau.
Partager