C’est la pierre d’achoppement qui va compliquer un peu l’agencement de ce projet. La difficulté réside dans l’utilisation d’un écran dont la définition est très limitée et qui n’a rien à voir avec celle du moniteur vidéo du P.C. de bureau. On pouvait dans la fenêtre du Moniteur de l’IDE afficher des lignes de textes presque sans limitation du nombre de caractères. Sur l’afficheur OLED avec la police utilisée, on peut au maximum afficher 21 caractères par lignes et cinq lignes par écran. Il va falloir se débrouiller avec cette limite et également optimiser les affichages pour avoir un rafraichissement pas trop lent. Question : Monter le BARILLET avec du texte ? Ou avec un graphique ? C’est précisément l’objet de cette étude qui va servir avec P11_Afficher_Etat_du_BARILLET.ino à trouver des représentations aussi simples à interpréter que possible. Ce démonstrateur ne traite pas d’un BARILLET implanté dans le programme. Il ne fait que simuler les affichages. Toutefois, les procédures ont été développées en fonction de
l’implémentation binaire qui sera réservée au barillet. Les routines d’affichage sont paramétrées pour pouvoir directement servir dans le programme complet. Le premier écran envisagé et montré sur la Fig.53 est graphique. Pour obtenir sur la page écran un dessin presque lisible, seule la zone qui sur la machine est dirigée vers l’opérateur est représentée et ne montre que onze pions. Il est évident que cette « lorgnette » ne sera pas très commode pour embrasser d’un coup les 56 BITs du plateau de la machine. Aussi une option sous forme de grille présentée sur la Fig.54 est indispensable. Les deux écrans sont bien remplis, je ne regrette vraiment pas d’avoir opté pour l’afficheur de 1,3 pouces de diagonale, et non l’équivalent OLED de 0,96 pouces que j’affectionne car il présente deux couleurs bleue et jaune … mais il est si petit !
Police de caractères personnalisée.
Celle qui a été choisie dans la bibliothèque U8glib présente une taille suffisante pour un visuel assez grand qui convient pour les personnes « du troisième âge » dont je fais partie. Lisibilité parfaite, avec pour inconvénient de limiter les textes sur une page écran à cinq lignes de vingt caractères. Il se trouve que la représentation du BARILLET impose à l’écran une définition bien plus élevée. Les textes dans la grille ou pour repérer les positions sur le carrousel doivent maigrir et devenir très petits. De ce fait, nous allons créer notre propre police de caractère présentée sur la Fig.55 qui se limite à six valeurs affichées.
Chaque chiffre s’inscrit dans une matrice de 3 PIXELs de large et de cinq PIXELs de haut. Les nombres sont séparés par une colonne d’un PIXEL ce qui entraine pour les dizaines des mosaïques de 7 carrés de large par 5 de haut. La valeur 40 toutefois est un cas particulier. Le chiffre 4 pour rester lisible fait quatre PIXELs de large au lieu de trois. Il faudra en tenir compte pour le cadrage dans les cases de la grille, ou pour le centrage sous les pions.
Interprétation de la représentation graphique du carrousel.
J’insiste sur le fait que le démonstrateur P11_Afficher_Etat_du_BARILLET.ino ne fait que présenter des possibilités et ne gère pas le BARILLET pour le moment. Beaucoup d’éléments sont prévus, mais tous ne seront peut être pas affichés. Par exemple le statut PAUSE semble séduisant, il restera toutefois à en tester la pertinence. Il en va de même pour le rappel de la référence de l’algorithme telle que Pgm073 ne sera pas forcément conservée dans la version ultime du logiciel. Nous allons détailler la représentation « fenêtrée » du plateau de la machine virtuelle. Pour établir le lien avec le plateau du prototype électromécanique, il nous faut absolument établir le parallèle entre la réalité matérielle, et la symbolique adoptée pour sa représentation sur l’écran de l’ordinateur. (Ce chapitre reprend celui proposé dans le didacticiel sur La Machine Élémentaire. Comme ce tutoriel constitue un tout, ne vous étonnez pas de retrouver ce « doublon ».) Commençons par regarder Image 15.JPG et Image 16.JPGÂ
qui sont préservées dans le dossier <Galerie d’Images>. Ces deux photographies présentent le BARILLET du prototype en cours de réalisation. Il importe sur ces deux exemples de voir comment sont repérées les positions des pions de cinq en cinq. Sur ces images vous constaterez que les BITs ont été repérés et numérotés en rouge tous les cinq pions sur le dessus du plateau. Ils sont également repérés en rouge et en bleu comme visible sur la Fig.57 également tous les cinq pions sur la tranche du carrousel. Ce ne sont que des repères visuels utiles à l’opérateur pour analyser plus aisément le résultat du déroulement d’un algorithme. Sur la Fig.58 on repère facilement le symbole rose de la Tête d’Ecriture. Que ce soit sur la représentation graphique ou dans la GRILLE seul le 1 et les dizaines sont représentés par les chiffres 1, 10, 20, 30, 40 et 50. Les valeurs avec le chiffre 5 sont représentées par la barre verticale tracée sur le Plateau virtuel. (Dans le médaillon bleu clair sur la Fig.58.) Dans la GRILLE ces valeurs « en cinq » sont mises en évidence par un PIXEL central dans la case concernée. L’Origine arbitraire, positionnée ici en 52 sera mise en évidence par le petit dessin . La représentation de l’origine sera prioritaire sur celle des autres repères du plateau.
Visualisation complète du BARILLET.
Représenter simultanément les 56 pions du carrousel s’avèrera utile pour examiner le résultat d’un traitement intervenant sur un grand nombre de BITs. Ce sera indispensable pour faciliter la saisie d’un état initial avant de pouvoir activer un algorithme en automatique avec RUN. Le nombre de 56 pions est idéal pour les représenter sous forme d’octets, c’est à dire un damier de 8 x 7. Le dessin de la Fig.59 qui surcharge une photographie va nous servir à préciser le mode de représentation. Les six positions « en 5 » sont repérées par un pixel central qui a été surchargé par un disque tracé en bleu clair. La représentation des pions à « 0 » et à « 1 » sera prioritaire sur celle des repères 1, 10, 20, 30, 40 et 50. Si la case est vide ou ne contient que le repère de position sur le plateau, c’est que l’état du pion concerné est à « B« . Les états « 0 » sont indiqués par le symbole
qui est un petit carré centré dans la cellule. On peut remarquer que cette représentation n’occulte pas le PIXEL central qui repère les positions « en 5 ». Par exemple les BITs n°15 et n°54 sont à l’état « 0« . Repéré en rouge sur la Fig.59 un BIT à « 1 » sera indiqué en remplissant entièrement la cellule tout en ménageant le PIXEL central. Dans notre exemple le BIT n°35 est à l’état « 1 ». Le PIXEL au milieu confirme la valeur 35. Pour éviter de surcharger le contenu d’une cellule quel que soit l’état de son BIT, l’Origine est repérée par les deux index surchargés en orange sur la photographie prise en exemple. La cellule concernée se trouve à la « croisée » des indexages. Dans l’exemple de la Fig.59 on peut affirmer que l’Origine arbitraire est en position 15 sur la machine.
Durée maximale de fonctionnement.
L’affichage de la Fig.58 indiquant des durées et le nombre de cycles d’HORLOGE effectué va présenter d’autant plus de caractères à visualiser que les valeurs seront importantes. Par ailleurs, pour visionner ces données il faut imposer une mise en page. Si l’on présente les valeurs trop à gauche, l’ensemble ne sera pas « équilibré ». Au contraire, trop à droite des caractères vont être hors de la mosaïque. Il importe donc d’établir un compromis entre positionnement latéral et ne pas risquer le débordement. Pour ne pas trop « brider » la machine, j’ai arbitrairement décidé que l’utilisateur ne laissera fonctionner son appareil qu’au maximum dix jours d’affilée. Quelques petits calculs s’imposent :
• Quand l’algorithme se déroule en « mode aveugle », la cadence de traitement se fait à vitesse maximale. Dans ces conditions l’ATmega328 déroule environ 4400 tours d’HORLOGE par seconde.
• Si on laisse fonctionner la machine virtuelle durant dix jours sans interruption, l’HOLOGE aura effectué : 86400 x 10 x 4400 Cycles soit l’affichage 3801600000 Cycles d’où le positionnement du texte adopté sur la Fig.58 qui assure un non débordement des limites de l’afficheur.
• Le temps mesuré du fonctionnement du microcontrôleur sera de 86400*10*1000 car il est calculé en millisecondes. On n’affichera que les centièmes de secondes ce qui conduira à la valeur la plus grande possible de 864000.00 S valeur simulée sur la page écran photographiée.
Durée Machine en temps réel maximal.
Problème strictement analogue, dans la version complète, si c’est possible on aura en option la possibilité d’afficher le temps que prendrait la machine électromécanique. Sur un fonctionnement simulé de dix jours, en supposant que les 33 lignes du programme contiennent l’écriture d’un « 1 » qui est la plus longue, (« 1 » : 1,8S) une rotation qui exige 0,27S et un saut de 10 transitions, le cycle HORLOGE le plus lent consomme environ 7,7S. Dans ces conditions pour les 3801600000 Cycles la mécanique devrait fonctionner durant 29.272.320.000 secondes soit environ 928 années et 80 Jours. (OUF!) Aussi, compte tenu du fait qu’une ligne affichée ne peut contenir que 20 ou 21 caractères au maximum, la durée sera affichée à la place de la donnée mesurée du temps microcontrôleur Tmp µP 864000.03 sous trois formes envisageables (Fi.60, 61 et Fig.62) :
• Durée importante : T réel 280A 288J.
• Durée moyenne : T réel 26J 17H.
• Durée « raisonnable » : T réel 21H 23′ 20 ».
Il ne reste plus qu’à intégrer ces affichages dans le programme complet, ce sera l’objet du prochain démonstrateur.
La suite est ici.