Cette étape est indispensable, car il faut déterminer la façon dont l’échantillonnage va être stocké dans la mémoire non volatile EEPROM, et trouver la manière dont seront exploitées et visualisées ces informations. Enfin, on va profiter de ce démonstrateur pour mettre en place la structure du menu qui exploite le potentiomètre pour sélectionner l’une des six fonctions.
Sélection de l’une des six fonctions envisagées.
L’idée consiste à déclencher l’une des six fonctions lorsque l’on active un Clic long. C’est la position calée sur le bouton du potentiomètre qui détermine laquelle est invoquée, raison pour laquelle on utilise un bouton flèche et que sur l’étiquette six points d’indexage ont été tracés en divisant l’amplitude de la rotation en cinq secteurs d’ouverture angulaires équivalentes. Pour fiabiliser et faciliter au maximum le travail de l’opérateur, la technique (Voir la Fig.106.) consiste à attribuer à chaque index un secteur angulaire dont les limites sont éloignées au maximum des positions voisines. Il suffit de placer la frontière du secteur à la moyenne des deux positions mitoyennes. Avec cette approche, même soufrant d’une très mauvaise coordination gestuelle, plaçant vaguement la flèche du bouton pas trop loin du point vert, on déclenche sans aucun problème l’activation de la fonction désirée. Valeurs retenues :

Passage des textes en EEPROM.
Lorsque l’on va décrire les procédures d’affichage des échantillons sauvegardés en EEPROM sur une période d’un mois, vous allez constater que l’exploitation graphique est assez ambitieuse. Nous pouvons être certains que si l’on veut pouvoir intégrer le voltmètre, il va falloir optimiser le code à outrance. Vers la fin de ce tutoriel, j’ai osé consacrer un chapitre résumant des « conseils pour programmer avec méthode ». On y lit en particulier « si la mémoire non volatile EEPROM n’est pas utilisée pour mémoriser des données à conserver sur coupure alimentation, y loger un maximum de textes à afficher sur les écrans ». C’est en effet l’un des moyens les plus efficace pour gagner de la place en mémoire de programme. C’est d’autant plus justifié que de toute façon il faudra utiliser les procédures d’écriture et de lecture en EEPROM. Comme une étude préliminaire montre que 444 Octets seront mobilisés en haut de cette mémoire pour y loger les échantillons, il nous reste largement assez de place pour y stocker l’intégralité des textes. Dans ce but, nous allons utiliser l’outil nommé P18_Initialiser_EEPROM.ino chargé de cette mission. Non seulement cet outil va inscrire les textes dans la mémoire non volatile, mais également y saturer les 444 octets de la zone des échantillons pour simuler des enregistrements et ainsi tester la fonction Historique. Voici le protocole d’utilisation de P18_Initialiser_EEPROM.ino:
1) Téléverser le programme dans l’ATmega328,
2) Si la mémoire EEPROM de votre Arduino a déjà été inscrite avec des informations quelconques, valider les deux remarques des lignes 22 et 23 pour la remplir avec des $FF,
3) Activer le Moniter de l’IDE qui exécute le programme. Ce dernier inscrit les textes, puis les échantillons simulés, et enfin liste à l’écran entièrement le contenu de l’EEPROM. Les textes sont listés en lettres, chiffres et ponctuations, les échantillons eux sont exprimés en Hexadécimal.
Les textes sont listés comme sur la copie d’écran de la Fig.107 avec des passages à la ligne intempestifs. Ces derniers sont provoqués par le Moniteur de l’IDE qui utilise une police de caractères particulière. S’il montrait les caractères véritablement inscrits, nous aurions le résultat du montage de la Fig.108 sur lequel les accentués sont mis en évidence en rose. Sur ces figures la longueur des textes est très provisoire, car P18_Initialiser_EEPROM.ino n’est écrit actuellement que pour le démonstrateur P19. Mais au fur et à mesure du développement du programme d’exploitation ces écritures vont être complétées. Du coup, pour vous le listage sera bien plus étoffé et la date de validation sera différente.
Lorsque je désire effectuer le listage d’une grande zone de mémoire, la zone est découpée en « pages » de 256 octets avec la présentation de la Fig.109 organisée en tableau. Les adresses des cellules sont indiquées en Lignes/Colonnes repérées en bleu pastel sur la copie d’écran. L’EEPROM faisant un kilo-octet, les adresses vont implicitement de 0 à 1023. Par exemple, ici le « t » se trouve en 96 + 4 = 100. Les colonnes sont repérées en Hexadécimal. Du coup, le « f » se trouve en 144 + 13 = 157. C’est de cette façon que sont repérés les débuts des chaînes de caractères à visualiser et seront fournies en paramètres à la procédure d’affichage.
Quand on liste le contenu sous forme alphabétique, tout caractère non affichable est remplacé par « .. ». Pour repérer aisément l’intégralité de la zone EEPROM restant disponible pour y ajouter des textes si nécessaire, la zone comprise entre 580 et 1023 est listée en mode Hexadécimal. Elle est ainsi très facile à repérer.
Étude préliminaire du stockage des échantillons.
C’est arbitrairement que la période de stockage d’environ un mois a été choisie. Reste à savoir durant cette période, combien d’échantillons seront sauvegardés. C’est principalement le graphe de représentation sur le petit écran OLED qui va imposer la décision. En effet, avec quatre échantillons par jour, pour quatre semaines on aboutit à 112 échantillons. Pour une présentation agréable des graduations, on arrive à un cadre qui fait 113 PIXELs de large. Il importe donc de soustraire deux échantillons qui seraient invisibles sur les cotés. On doit donc sauvegarder 111 données, avec pour chacune quatre OCTETS soit 444 emplacements.

L’ensemble des échantillons sont stockés dans les cellules hautes de la mémoire, c’est à dire de l’adresse décimale 0580 à 1023 incluse. À ce stade du développement on peut rêver, et prévoir de sauvegarder non seulement les valeurs du CO2 sur quatre semaines, mais également celles de l’hygrométrie HYG et celles de la température TMP. La valeur potentielle du CO2 dépassant 255 impose deux octets pour sa sauvegarde. HYG et TMP sont moins exigeantes et seront codées sur un seul octet chacune. Chaque échantillon sera enregistré « du bas » de la mémoire vers le haut sous forme de quatre octets avec CO2 en premier, puis HYG et enfin TMP. La Fig.110 schématise la façon dont sont enregistrées les valeurs. Chaque fois qu’un échantillon va être stocké, il faut lui faire de la place dans les cellules 580 à 583. Dans ce but, on décale l’ensemble de la zone comprise entre 580 et 1019 de quatre positions « vers la droite ». Le plus ancien enregistrement qui se trouvait entre 1020 et 1023 est
donc effacé par « écrasement ». On peut alors enregistrer l’échantillon le plus récent en 580 à 583 qui efface alors cette position par écrasement. En résumé, on effectue un SHIFT à droite de tout le registre à décalage 580 à 1023 de quatre cellules « vers la droite » avec insertion à gauche des quatre valeurs de CO2, HYG et TMP. (C1L signifie CO2 pour l’échantillon n°1 de poids faible (LOW) et C1H pour le poids fort. (HIGH))
Étude préliminaire de présentation des échantillons.

C’est précisément cette représentation graphique et ses graduations qui impose le nombre d’échantillons enregistrés durant quatre semaines. L’écran spécifique montré sur la Fig.111 comporte pas mal d’informations. Pour expérimenter cette phase du développement, après avoir inscrit les textes dans l’EEPROM il faut téléverser P19_Demonstrateur_A_pour_V5.ino. Sur la Fig.111 on voit la progression au cours du temps de l’hygrométrie précisé par HYG dans Nature, qui augmente régulièrement. (Simulation inscrite avec P18_Initialiser_EEPROM.ino.) Comme on va enregistrer quatre échantillons par jour, sur le graphe J consomme donc quatre PIXELs de large. Une semaine S exige alors 28 PIXELs. Pour représenter les quatre semaines S il faut donc 112 PIXELs. En réalité, on n’en stockera que 111, le dernier à droite est « perdu ». En effet, pour des raisons esthétiques toutes les graduations ont des largeurs identiques. Du coup, la dernière graduation journalière coïncide avec le bord droit du cadre. Dans la pratique, les échantillons sont décalés non pas par « journée entière », mais toutes les six heures. Donc à gauche on n’a pas le dernier échantillon de la veille, mais le dernier enregistré. C’est donc l’évolution sur la période des 672 heures qui précèdent. Du reste, ce graphe pourra présenter une « discontinuité » si une coupure secteur relativement longue intervient. Les échantillons ne sont alors plus enregistrés jusqu’au retour de l’énergie. Dans ce graphe, le jour J actuel est situé à gauche, le plus ancien à droite. Pour indiquer le sens de mémorisation des échantillons les deux flèches en D donnent un rappel du déplacement des valeurs à chaque stockage. Dans ce mode d’exploitation de l’appareil, tourner le bouton du potentiomètre permet de déplacer le curseur C de position de l’échantillon dont la Valeur est alors précisée dans le cadre du haut. Sur la droite en G sont précisées les valeurs limites des graduations. Comme il ne restait de la place que pour un seul chiffre significatif, on doit appliquer un coefficient multiplicateur de 1000 pour le CO2 et de 10 pour HYG et TMP. (Précisé plus avant un rappel textuel est prévu.) À l’affichage, la plage de visualisation est dilatée. Pour le CO2 la plage affichée va de 0 à 1000 avec effet de butée visuelle en haut du cadre. Par contre c’est la valeur réelle qui est indiquée quand on déplace le curseur. Pour la température, l’appareil étant dans une pièce protégée des intempéries, de façon analogue la plage affichée est « étalée ». Elle va de 20 à 40°C avec effet de butée sur le cadre en haut et en bas si dépassement. Dans ce cas, c’est naturellement la valeur réelle qui sera précisée dans le cadre réservé à Nature.
Les divers écrans de l’HISTORIQUE.
Pour activer cette fonction, il faut positionner le potentiomètre vers l’index 2 et faire un Clic long. Chaque Clic court dans ce mode fait changer la Nature du thème affiché avec adaptation des valeurs de graduation en G. En permutation circulaire on visualise le CO2 de la Fig.112, TMP de la Fig.113 et HYG de la Fig.114 dont l’hygrométrie monte jusqu’à 100% valeur qui sera très rare pour ne pas dire très improbable. Quand on inscrit les textes en EEPROM avec P18_Initialiser_EEPROM.ino on sature également la mémoire d’échantillonnage pour la simulation d’un historique. Les plages inscrites sont les suivantes :
• CO2 : 200 à 857 • HYG : 0 à 100% • TMP : 25 à 35°C.
Ce sont ces plages de variations qui sont tracées sur le graphe et affichées en numérique.
Deux options complémentaires.
Durant le développement de P19 il est apparu que dans le « MENU » prévoir la fonction d’affichage standard du taux de CO2 ne présentait strictement aucun intérêt, car toutes
les options ramènent à la page « standard » d’affichage des trois paramètres atmosphériques. Aussi, pour que cette position ne reste pas une triste redondance, un Clic long lorsque le bouton flèche pointe la position N°1 ouvre la page d’affichage de la Fig.115 qui donne le rappel des coefficients multiplicateurs à appliquer en fonction de la Nature du thème affiché. Un Clic court durant cette option ouvre l’écran de la Fig.116 qui se passe de commentaire. Que la réponse soit OUI ou NON il y a retour à l’écran de base. ATTENTION : Si la réponse est OUI par un Clic long, l’intégralité de la mémoire d’échantillonnage est effacée par des zéros sans autre demande de confirmation. On peut donc à tout moment effacer la zone simulée par le programme P18.
La suite est ici.