14) L’art de dilapider les richesses !

Abondance de bien ne nuit pas annonce l’adage populaire. Figurez-vous, que depuis le tout début du développement du programme, j’ai optimisé à outrance le codage. Chaque fois qu’un octet pouvait être économisé, quitte à créer une procédure spécifique, j’ai optimisé l’intégralité des décisions, que ce soit dans le choix du type des données, l’exploitation au mieux de l’EEPROM etc. Optimaliser l’optimisation est une obsession, un reflexe de programmeur auquel je ne déroge jamais. Ce n’est que de cette façon que l’on peut traiter une foule de choses avec des microcontrôleurs relativement modestes. Et puis cette approche est rassurante, car elle nous laisse à penser que « tout finira par rentrer » dans les neurones de silicium. Cette optimisation à outrance à conduit à la situation suivante : Quand l’intégralité de ce que j’avais envisagé de faire sur la petite machine a été effectif, comme le dit si bien Dudule il restait encore 19% de place disponible pour ajouter du code binaire. Quelle aubaine. Du coup, j’ai craqué !
Scandale, gaspillage, gabegie, j’ai décidé de donner dans un luxe outrancier. Sans vergogne j’ai dépensé la bagatelle de 1578 octets pour m’offrir un petit tableau, un joli papillon. Le pire c’est que cette folie dilapide pas moins de 601 octets en mémoire dynamique. Comme tout « nouveau riche » qui se respecte, j’ai décidé qu’il restait largement assez d’espace dans le PILE de l’ATmega328 pour assurer un fonctionnement fiable du programme. Cet argument fallacieux est d’autant plus pertinent que le programme est pratiquement achevé, et que je doute fortement de trouver de nouvelles idées pour ajouter des fonctions importantes au logiciel. Hop hop hop, dépensons, balançons les octets par la fenêtre …

Une belle petite page graphique.

Dernière page de donnée ajoutée à celles qui ont été décrites dans le chapitre précédent, comme il restait une place confortable dans les ressources du microcontrôleur, j’ai pensé qu’un écran qui précise quels sont les journées dans l’année qui ont conduit au MAXimum et au minimum d’énergie n’était pas foncièrement idiot. Lorsque sur le papier quelques griffonnages ont été tracés pour déterminer les positions et les textes qui figureraient sur l’écran, la pauvreté de la nouvelle page est devenue évidente. Seulement deux données laissaient un écran bien vide. Aussi, l’idée d’agrémenter l’ensemble d’un petit dessin « écolotruc » s’est rapidement imposée. Rassurez-vous, en moins de deux heures le code source était en place et vérifié, car j’avais déjà réalisé ce dessin lorsque j’ai étudié la bibliothèque de l’afficheur OLED utilisée. Il suffisait d’ajouter un Item dans le menu et de copier/coller le dessin et sa routine de traitement. Le plus long a consisté à ajouter le texte RST sur l’image, (Voir la Fig.40) dans les valeurs des Octets définissant la matrice graphique. Pour celles et ceux qui s’engagent régulièrement dans la programmation, je joins à ce didacticiel un petit livret à imprimer , comme pour la notice d’utilisation. Ce petit manuel décrit en détails les très nombreuses possibilités offertes par la bibliothèque qui accompagne le petit écran OLED. Je joins également au didacticiel cette « library ».
Pour « plaider non coupable », les séquences de programme qui traite de l’image sont très formatrice. Pour ceux qui sont très attirés par la programmation, le code ajouté peut servir d’exemple lorsque vous désirerez créer un dessin de type « matrice de Pixels », sans compter que pour cette page particulière le programme réalise une « rotation » d’écran de 90°. L’objet du délit est présenté sur la Fig.38 qui est orientée dans le sens transversal pour des raisons de « mise en page », le bel insecte ne conservant ses lignes que si sa définition verticale est bien supérieure à 64 points image. Du coup, pour observer cette page particulière, il faudra orienter « verticalement » le petit coffret, comme nous le faisons naturellement avec les appareils photographiques ou les téléphones cellulaires. Voir la Fig.39 plus apte à présenter le Lépidoptérus Pixelisus Miriatus. Pour pouvoir valider le logiciel d’exploitation, le petit programme de servitude Ecrire_les_Valeurs_en_EEPROM.ino impose en 2 comme dates pour les extrémums celles des solstices, données qui pour de l’arbitraire sont assez logiques. Notez au passage que si l’une des valeurs est inférieure à dix, un espace en tête est généré pour parfaire l’alignement horizontal des quatre nombres. Petit « plus collatéral », en 1 a été ajoutée une information qui complète l’ensemble des données systèmes. Nous verrons plus avant que la petite carte Arduino NANO peut fort bien engager des RESETs intempestifs, quand insuffisamment chargées, les batteries se déchargent la nuit en dessous de la tension de service qui assure le fonctionnement correct de l’ATmega328. Dès que la tension « solaire » redevient suffisante, la carte Arduino redémarre sur un RESET, obligeant comme
nous le verrons plus loin l’opérateur à cliquer sur le clavier. Comme plusieurs jours peuvent ainsi ne pas être enregistrés, les graphes contiendront des zones nulles en énergie. Enregistrer le nombre de redémarrages depuis la RAZ générale n’est pas
fondamental mais comme il restait de la place à revendre pour le programme autant l’indiquer.

 

La suite est ici.