Voilà, j'ai poussé un meilleur exemple. La doc n'existe pas, et la lib ne fonctionne que pour un écran pilotable par la librairie LiquidCrystal ou sa version 'Fast'... Alors l'adaptation à ton besoin risque d'être corsée !
Je n'y ai inclus aucune interaction avec des boutons, mais ça va venir. J'ai juste laissé ma version utilisée dans Visual pour tester avec des touches du clavier. Les principaux événements sont EVENT_LESS (reculer), EVENT_MORE (avancer), EVENT_SELECT (sélectionner) et EVENT_CANCEL (annuler). Je n'ai pas testé l'exemple sur un Arduino, mais DcDccControler fonctionne sur un Nano avec la librairie, et avec beaucoup de fenêtres !
L'essentiel du travail pour le créateur d'interface se situe dans la création de la liste des textes en tête de fichier, et surtout la liste des 'Windows' et leur enchaînement. A ce sujet, attention au dernier argument de lcd.Setup() qui est le nombre total de fenêtres !
Trois types de fenêtre :
Splash pour un affichage temporaire de quelque chose, genre copyright au démarrage...
Interrupt pour accéder depuis n'importe où à une fonctionnalité particulière, comme un arrêt d'urgence ou un 'Cancel' de la fenêtre en cours,
et les fenêtres normales.
Contrairement aux deux autres, celles-ci s'enchaînent via une arborescence créée dans le setup. Là encore plusieurs types de fenêtre:
Choice permet de faire un choix parmi une liste.
Int et Text font de la saisie et permettent d'entrer une valeur.
YesNo pour valider un chois par oui ou non
Confirm pour valider un choix par l'événement EVENT_SELECT ou sortir par EVENT_CANCEL.
La filiation des fenêtre se fait par les deniers arguments de AddWindow() : l'avant dernier est l'adresse de la fenêtre mère, le dernier est l'indice du choix correspondant dans cette mère si c'est un WindowChoice.
Il y aurait beaucoup à dire, en particulier sur les fenêtres d'interruptions et sur la dérivation locale de Window pour créer ses propres fenêtres, mais déjà si je ne t'ai pas noyé, je considère que c'est un résultat acceptable !