07) Optoélectronique : Les afficheurs graphiques.

Déjà 49 démonstrateurs et on a pas encore abordé les afficheurs graphiques. Rassurez-vous, quel que soit le nombre d’expériences nécessaires, nous testerons les motorisations, les capteurs en tous genres et même deux ou trois mini-projets un peu sophistiqués. Venons-en au but de ce chapitre. Compte tenu de la demande boulimique en possibilités d’affichages électroniques graphiques, le marché a développé une foule de modules de toutes les dimensions, définitions, monochrome ou couleur, voir tactiles pour certains. Il existe tellement de références que l’on ne sait plus où donner de la tête. Aussi on va se contenter ici de n’en tester que quelques-uns parmi les plus courants et les plus populaires en commençant par une fratrie que j’affectionne particulièrement pour leurs modestes dimensions (Parfaites pour de tout petits boitiers.) : Les écrans OLED.

Expérience 050 : Écran OLED le plus petit.

Avec ce démonstrateur, si l’on s’en tient à exactement 100 expériences, nous aurons parcouru avec Experience_050.ino la moitié de notre voyage, ce qu’en aviation on nomme le point de non retour. La plus petite de ces merveilles fait 0,96 pouces soit 2,4cm de diagonale. Sa définition est de 128 x 64 PIXELs. Il existe en monochrome blanc, en monochrome bleu et, comme sur la Fig.105, en bicolore jaune et bleu. Nous allons commencer par les monochromes, sachant qu’ils sont tous interchangeables et utilisables indifféremment avec un même programme. Ces afficheurs partagent tous une bibliothèque commune <Adafruit_ssd1306syp.h> disponible dans le dossier <! BIBLIOTHEQUES>.
ATTENTION : Interchangeables … pas forcément. En effet, il faudra se montrer prudent quand on branchera un tel module sur le connecteur du circuit imprimé. En effet, lorsque l’on commande ce genre de référence, bien qu’en apparence ils sont totalement identiques, en fonction des fournisseurs les broches GND et VCC dans le médaillon de la Fig.105 peuvent être permutées. Aussi, personnellement je prévois toujours sur mes circuits imprimés deux connecteurs HE14 à trois picots, avec possibilité d’inverser la polarité au moyen de deux « straps ».
Pour que vous puissiez appréhender toutes les facettes de l’utilisation de cet afficheur vraiment tout petit, je vous propose dans le dossier <EXPERIENCE 50> pas moins de 7 petits programmes. Avec autant de démonstrateurs pour ne présenter qu’un seul afficheur vous auriez crié « Scandale ! C’est du remplissage pour arriver à 100, c’est une arnaque ! Bououououououououou. »
Aussi, pour éviter toute polémique, tous porteront cette référence 50 et seront blottis dans un dossier à part. Ouf, nous avons préservé la sérénité et la bonne humeur …
Un à un téléverser ces divers démonstrateurs, et ainsi en analysant les listages il vous sera facile de passer en revue tout l’éventail d’utilisation de la bibliothèque <Adafruit_ssd1306syp.h>.
On peut passer à son grand frère de 1,3 pouce de diagonale.
Souvent utilisé sur des projets un peu élaboré, la mise au point se fait sur des plaquettes à essais. Elles sont très encombrées de composants et de fils de liaisons, du coup un petit écran OLED est soit masqué par les fils, soit impossible à poser avec une orientation correcte. Du coup, un petit dispositif comme celui de la Fig.106 peut s’avérer particulièrement efficace. Il est constitué d’une colonne assez haute pour placer l’afficheur au dessus des platines à essais à bonne portée pour qu’un dessin puisse être examiné à la loupe. Bien que haute la colonne est bien stable grâce à son statif 3. Tout en haut on dispose d’un support orientable 1 sur lequel est bridé l’afficheur. De longs fils souples passent à travers le pontet 2 pour aller se brancher sur les circuits en cours de développement. Comme dans mes applications j’utilise souvent un codeur rotatif sans butée, un exemplaire est disponible en permanence en 4. La Fig.107 présente les trois frères. Même famille mais pas des jumeaux. En effet, autant l’écran monochrome Bleu en A et le blanc en B sont « entiers », autant le bicolore en C présente entre les mosaïques jaunes et celles en bleu une ligne non pourvue de luminophores. On le voit nettement avec la mise en évidence par la flèche rouge. Conclusion, si le projet implique des graphiques, et qu’une discontinuité est nuisible, il faudra écarter de votre choix l’écran bicolore. Pour la couleur, c’est une question de goût, sachant que l’écran blanc se prête bien à l’ajout d’un filtre de couleur quelconque.

Expérience 051 : Écran OLED de 1,3 pouce de diagonale.

Avec les années, inévitablement notre vue se dégrade lentement. À partir de 70 à 75 printemps, (Printemps, été, automne ou hiver !) il faut avouer que le minuscule écran devient un peu illisible. Aussi, depuis plusieurs projets j’ai opté pour son grand frère de 1,3 pouce de diagonale nettement plus visible pour moi. Je vais donc vous présenter cet ainé qui appartient aussi à la famille OLED, mais qui se gère avec la bibliothèque <U8glib> également disponible dans le dossier <! BIBLIOTHEQUES>. Cette bibliothèque présente tellement de possibilités, que pour comprendre les démonstrateurs qui vont suivre je vous invite fortement à imprimer le petit livret de vingt pages Bibliothèque U8glib.pdf disponible dans le dossier <Documents>.
Comme pour l’expérience précédente, pour que vous puissiez tester toutes les possibilités décrites dans le livret, on va encore se coltiner 16 démonstrateurs. Aussi, pour éviter les protestations véhémentes évitées avec P050 on va encore loger tous ces croquis dans un répertoire à part qui par originalité est nommé <EXPERIENCE 51>. ATTENTION, (Voir la Fiche n°32.) comme pour le modèle précédent, en fonction des fournisseurs GND et +5Vcc peuvent être inversés. Pour que ces afficheurs fonctionnent, il faut réunir SDA et SLC au +5Vcc par des résistances de 10kΩ, si ce n’est pas déjà fait par un autre périphérique qui serait également branché sur la ligne. Il me semble opportun et indispensable avant de poursuivre d’aller consulter la Fiche n°33 et la Fiche n°34 qui abordent la notion de ligne bidirectionnelle au format I2C. L’immense avantage de ce concept incontournable en petite robotique, c’est la possibilité de piloter un grand nombre de périphériques avec seulement deux fils et bien entendu GND. L’afficheur OLED en fait usage.

Souvent, dans mes petits projets j’utilise un clavier à cinq touches. Par exemple le démonstrateur P51R y fait appel et la Fig.110 en montre une page écran avec un menu à quatre items. Bien que le clavier du type de celui de la Fig.92 qui équipe le SHIELD LCD fonctionne globalement bien, traiter autant de touches sur une seule entrée analogique nuit un peu à l’immunité contre les perturbations car les seuils de décision sont relativement proches les unes des autres. Une longue expérience tend à prouver que si l’entrée analogique ne dépasse pas la gestion de trois boutons poussoir, la fiabilité est nettement meilleure. Aussi, pour les applications qui imposent la présence de cinq touches, j’ai opté pour un grand nombre de mes réalisations un clavier à cinq touches réparties sur deux entrées analogiques. Pour développer les projets, j’ai donc créé un petit module d’essai montré sur la Fig.109 bien commode avant de passer à une version terminée avec son coffret, son écran et un clavier analogue on s’en doute. La Fiche n°35 précise le schéma électrique retenu. D’une façon générale la touche centrale sert à éteindre l’afficheur, raison pour laquelle elle est noire. Quand les deux boutons du haut et du bas ne servent pas à se déplacer dans un menu, (Cas de la Fig.108) le B.P. du haut sera utilisé pour répondre OUI, cette option générant souvent un risque de perte de donnée, il est en rouge. Le B.P. du bas réservé à NON est alors bleu car généralement sans risque. Les cabochons gauche et droite ont été puisés dans les couleurs qui restent. Pour appréhender toutes les facettes d’utilisation de cet afficheur OLED, vous téléchargez un à un les démonstrateurs du dossier <EXPERIENCE 51> et petit livret en main vous observerez bien les listages commentés pour avoir des exemples concrets des nombreuses fonctions de la bibliothèque <U8glib>.

Expérience 052 : L’afficheur ST7565.

Pour apprendre à utiliser une bibliothèque quelconque, ou les spécificité d’un composant particulier, rien ne vaut quelques exemples bien « ciblés » qui fonctionnent. C’est exactement ce que l’on va faire avec l’afficheur ST7565 qui n’a pas besoin d’une bibliothèque spéciale pour être mis en œuvre ce qui est un avantage incontestable. (Pas de mémoire de programme encombrée par les modules d’une bibliothèque importée.) Le modèle que je vous propose reste en mosaïque graphique de 128 x 64 PIXELs. Il est très populaire et reste encore facile à trouver en ligne, car il présente un « grand écran » de 2,7 pouces soit 6,9cm de diagonale. Par ailleurs, son rétro-éclairage dispose de trois couleurs fondamentales qui permettent sept teintes différentes. (Dont une blanche.)
Devinez pourquoi 15 démonstrateurs sont mis dans un dossier à part nommé étrangement <EXPERIENCE 52> pour la circonstance ? Vous avez parfaitement « intuité » la procédure. On télécharge un à un les différents démonstrateurs, on observe son comportement et surtout on va observer attentivement le listage pour comprendre comment sont utilisés les diverses commandes associées à cet afficheur. Bien entendu on a sous les yeux les deux Fiche n°36 et Fiche n°37.
Les tableaux sont des gros consommateurs de mémoire de programme car ils sont considérés comme des variables. Ils occupent de leur taille l’espace réservé au programme, mais également ils empiètent « en doublon » l’espace en mémoire dynamique. Aussi, si un tableau ne contient QUE DES CONSTANTES, il est particulièrement intéressant de le stocker en mémoire non volatile EEPROM. Il ne faut pas loger des variables en EEPROM, car celle-ci est nettement plus lente en Ecriture que de la RAM, mais surtout le nombre d’écritures que l’on peut y faire sur une cellule ne dépasse pas 100000 environ. (Par contre on peut y lire sans limite.)

Expérience 52L : Inscription de données en EEPROM.

Quand on a l’habitude d’utiliser régulièrement la mémoire non volatile EEPROM de l’ATmega328 pour y loger des paramètres qui doivent être retrouvés après coupure de l’alimentation, il est bien commode durant le développement du projet de pouvoir se faire lister le contenu de cette dernière. Aussi dans le dossier <OUTILS> est disponible un petit programme utilitaire nommé Lister_EEPROM_en_HEXA_ou_en_TEXTE.ino. Comme son identificateur l’indique, par défaut le listage se fait en HEXADECIMAL. Mais en modifiant deux lignes on liste en supposant que chaque cellule contient le code ASCII d’un caractère alphanumérique ou une ponctuation. Tout caractère hors ASCII sera affiché « .. ». En validant une ligne, il est possible d’effacer une zone quelconque de l’EEPROM en y écrivant des #FF. (Quand une EEPROM est vierge elle contient non pas des « 00 » mais des « FF » soit 255 en hexadécimal.) Naturellement il est facile dans la ligne en question de remplacer le 255 par n’importe quelle autre valeur inférieure. La Fig.112 montre ce que l’on obtient avec cet outil logiciel lorsque le démonstrateur P52L a été téléversé et activé. Vous pouvez ranger ce programme dans votre dossier ARDUINO, il vous servira probablement très souvent. L’HEXADECIMAL se justifie chaque fois que l’EEPROM contient des données binaires qui ne sont pas des caractères ASCII. Si cette dernière contient à la fois du texte et des valeurs binaires, il suffit de modifier un tantinet ce programme outil de façon à lister en TEXTE la zone conservée, et en HEXADECIMAL la zone des données. Dans ce cas les deux routines en ligne 34 et en ligne 39 seront invoquées.

Expérience 52Q et 52R : Changement de stratégie.

Deux applications bien sympathiques transforment Arduino en un voltmètre analogique et numérique montré sur la Fig.113 et sur la Fig.114 laissant à chacun le choix de la présentation. Du reste, il serait facile de fusionner les deux et de sélectionner l’option préférée au moyen d’un inverseur par exemple. Autant la version linéaire ne pose aucun problème, autant l’aiguille pivotante engendre une difficulté non résolvable sans le secours d’une bibliothèque spécifique. En effet, il faut pouvoir écrire les chiffres en arc de cercle, c’est à dire écrire à des positions strictement quelconques sur l’écran. La bibliothèque <PERSO_ST7565.h> étend les possibilités de base et en particulier résout cette difficulté. Naturellement elle est disponible dans le dossier dédié, et surtout à partir de la page 23 de Bibliothèques Arduino.pdf sont décrites ses nombreuses méthodes. Bien entendu, avant de pouvoir tester P52Q et P52R il faudra importer ce module logiciel.

Expérience 053 : Écran CLD couleur / tactile SLD10261P.

Avec un écran couleur de 320 x 240 pixels et un nombre possible de couleurs de 65535 on commence sérieusement à donner dans le luxe. Si de plus il est tactile, alors là on frise le sommet. Équipé d’origine d’un lecteur de mini-carte SD on peut exploiter des images « Bitmap » qui y seraient stockées. Il s’agit d’un vrai écran couleur qui permet le respect total de la teinte des images. Fourni de plus avec un stylet approprié pour s’en servir, on le trouve actuellement sur la toile pour environ 21€ et ouvre un éventail de possibilités considérable. Il n’y a rien à câbler, pas la peine d’étudier un quelconque circuit imprimé car, comme le montre la Fig.115, il est agencé en un SHIELD qui s’insère directement sur une carte Arduino UNO. Avec le démonstrateur Experience_053.ino on va pouvoir tracer de merveilleuses œuvres d’art qui comme celle de la Fig.116 vont probablement me rendre célèbre. (C’est une grenouille et heureusement que je n’ai pas cherché à dessiner une salamandre !) Ce module peut être « facilement » programmé car on dispose de deux bibliothèques <SeeedTouchScreen.h> associée à SeeedTFTv2.h qui sont jointes à ce didacticiel dans le dossier <! BIBLIOTHEQUES>. Outre le démonstrateur P053 la bibliothèque est accompagnée de sept exemples. Enfin, cerise sur le gâteau, dans le dossier <! BIBLIOTHEQUES> se trouve un programme relativement conséquent qui utilise à la fois les images de la carte SD et l’écran tactile. Dans le dossier <CADRE PHOTOS TACTILE> se trouve également une documentation en quatre pages qui détaille l’utilisation de cet afficheur.

Chaque mini-projet digne de ce nom mérite un coffret. Pour un cadre photographique enfermer l’écran n’est pas idéal. Aussi, au lieu d’un boitier fermé, l’écran SLD10261P est simplement immobilisé sur un support orientable montré sur la Fig.117 et alimenté par un adaptateur secteur USB quelconque. Ce dispositif est réalisé en polystyrène choc. Matériau très agréable à façonner et à coller, mes techniques pour le mettre en œuvre sont décrites dans le petit document Réalisation des coffrets.pdf disponible dans le dossier <DOCUMENTS>. Le support de la Fig.117 est montré dans le dossier <Images> du petit projet qui préserve sept photographies de ce dispositif très commode. Le cordon un peu raide d’Arduino UNO est plié court et passe entre la carte de l’ATmega328 et la plaque orientable du support.

Expérience 054 : Le grand frère du SLD10261P.

Pour terminer ce chapitre sur les afficheurs graphiques, nous restons dans le luxe avec le module de 3,5 pouces de diagonale. (9,2cm de diagonale.) Également fourni avec le stylet pour utiliser l’écran tactile, il partage l’ADN du SLD10261P mais utilise des bibliothèques différentes et présente une définition de 480 x 320 PIXELs. Il est livré avec un petit « compact-disc » de 8cm de diamètre qui contient les bibliothèques, seize exemples d’utilisation et toute la documentation nécessaire pour s’en servir. (Un peu indigeste toutefois car la documentation ne contient que les particularités techniques du module, mais pour appréhender la bibliothèque il faudra également analyser en détails les exemples fournis pour comprendre !) Comme son petit frère, il est disponible sous la forme d’un circuit SHEILD directement associé à une carte Arduino UNO avec l’inconvénient de cacher les E/S disponibles.
ATTENTION : n’utilisant pas le petit connecteur de l’ICSP d’Arduino, il y a deux possibilités de le brocher et pas de détrompeur. Il faut le brancher vers la droite (Voir la Fig.118.) à l’opposé des prises d’alimentation d’Arduino. Noter qu’ainsi décalé le bouton du RESET est dégagé raison pour laquelle il n’est pas dupliqué sur le module. Le CD qui accompagne l’afficheur contient quatre fichiers de bibliothèques et je vous conseille de la installer toutes, ainsi l’intégralité des exemples proposés fonctionneront. Contrairement à ce que pourrait laisser entendre le nom <Install libraries> du dossier, les quatre modules s’importent de façon banale avec Croquis>Importer bibliothèque…>Ajouter bibliothèque… et désigner le chemin du CD jusqu’à <Install libraries>.
Comme le CD inclus bon nombre d’exemples d’utilisation, je ne vais pas alourdir le didacticiel avec d’autres croquis personnels autre que celui de la Fig.119 qui n’exploite que les possibilités « textuelles » de l’écran. Nous pouvons maintenant passer au chapitre suivant : Les périphériques de dialogue.

La suite est ici.