04) Optoélectronique : Les afficheurs alphanumériques.

Légion sont les afficheurs alphanumériques sept segments, seize segment, à matrices de points, décimaux, hexadécimaux et tout à l’avenant. Les divers types pullulent à un ou plusieurs digits par composant. L’offre foisonne sur la toile et l’on ne sais plus où porter notre choix.

Expérience 026 : Afficheur HEXADÉCIMAL.

Différence entre les composants précédents et celui de cet exercice, le TIL311 est un afficheur avec une logique intégrée. Il se pilote directement sur quatre broches A, B, C et D en binaire pur. Incluant une circuiterie de décodage, les valeurs binaires sont traitées en interne pour afficher directement sous forme matricielle les chiffres ou les six lettres. Ce module est particulièrement bien adapté pour servir d’interface à des systèmes fonctionnant en binaire pur. ATTENTION : L’intensité dans les points qui matérialisent le caractère est régulée en interne par la logique de l’afficheur. Par contre pas celle des deux points décimaux. Si vous voulez les utiliser il faudra intercaler une résistance d’environ 1kΩ. Le brochage à effectuer est consigné dans le tableau de la Fig.50 le démonstrateur Experience_026.ino n’ayant pas à gérer Blanking input en broche 8. La notice d’utilisation du TIL311.pdf est disponible dans le dossier <Documents>.

Expérience 027 : Afficheur sept segments.

Historiquement, « le sept segments » est l’un des plus anciens issus de l’avènement de l’électroluminescence. N’incorporant aucune logique intégrée, il ne comporte que sept LEDs linéaires avec éventuellement un point décimal circulaire. La Fig.51 présente un MAN6980 un peu ancien qui a la particularité d’avoir les huit LEDs internes en cathode commune contrairement au MAN6960 qui obligerait à le piloter en logique négative. On va donc avec notre exemplaire rester dans du « classique ». La désignation des segments donnée en Fig.52 est standardisée pour ce type d’afficheur, on la retrouve systématiquement dans les « Datasheets » de caractéristiques. Sur ce dessin figure également le brochage de l’afficheur vu de dessus ainsi que les affectations des broches de Sorties à respecter pour que le démonstrateur Experience_026.ino puisse fonctionner comme prévu. Noter qu’en interne les deux broches reliées aux cathodes communes 3 et 8 sont électriquement réunies. De se fait il sera suffisant de ne réunir GND que sur une seule de ces broches. Contrairement aux afficheurs précédents, le rendement de ce composant correspond à celui de « son époque ». Le courant nominal par segment est indiqué de 20mA à 30mA. Pour cette expérience on va se contenter d’une luminosité plus discrète avec un courant d’environ 2,4mA en utilisant des résistances de 1kΩ. Par contre, on sera obligé d’en placer une dans chaque anode comme montré sur la Fig.53 pour que l’éclairement ne soit pas fonction du nombre de segments éclairés. On retrouve la configuration de P016 où il faut jongler avec deux PORTS pour piloter l’afficheur car on évite d’utiliser D0 et D1 pour ne pas avoir à isoler ces deux broches lors du téléversement du code objet. On reste dans le cadre d’un automatisme aveugle qui émule ici un décompteur.

Particularité d’Experience_027.ino : Le programme intègre deux chronomètres indépendants. Il utilise une technique qui permet d’en réaliser autant que l’on désire. Toutefois, ne pas perdre de vue que leurs chronométrages ne seront corrects que si le logiciel ne va pas consommer plus de temps dans une procédure que celui des temporisations programmées. Noter au passage que sur ce type d’afficheur pourtant rudimentaire, il est possible d’afficher les lettres, si l’on accepte de mixer majuscules et minuscules. L’établissement de la police de caractères s’effectue conformément au tableau de la Fig.54 dans lequel est précisé le codage pour la lettre ‘F‘. La zone verte est relative au PORTD alors que la colonne en jaune correspond à la sortie binaire D8.

Expérience 028 : Le même en plus gros.

Légèrement plus de deux fois plus grand en surface, l’afficheur SC08-11HWA est un autre exemple de composant contemporain du MAN6980 partageant son ADN en termes de rendement et de philosophie. La Fig.55 les présente cote à cote pour se rendre compte de leurs dimensions relatives. Il s’enrichit d’un deuxième point décimal à gauche. Curieusement, bien que l’écartement des rangées de broches respecte les dixièmes de pouce, la répartition précisée sur la Fig.56 est asymétrique. Vous pouvez commencer par effectuer les branchements résumés sur la Fig.56 et les tester avec P027 en retrouvant « en plus grand » le même comportement. Puis, pour varier le plaisir Experience_028.ino est téléversé et un petit serpent va se déplacer à toute vitesse sur l’afficheur. Noter au passage que la vitesse de déplacement du serpent, le clignotement à 3,33Hz du point décimal de gauche et le clignotement à 1Hz du point décimal de droite constitue un exemple où l’on a émulé trois chronomètres totalement indépendants.

Expérience 029 : Un afficheur à seize segments.

Typique d’une époque où les afficheurs LCD n’étaient pas encore découverts, pour enrichir la finesse des caractères présentés sur les systèmes électronique, le seize segments est venu « bousculer » un peu les habitudes. On frise avec ce type de composants le maximum « d’occupation » possible sous forme de segments. Je vous propose pour illustrer ce propos de mettre en œuvre un LTP-587HR qui intègre dans son encapsulage dix-sept LEDs rouges à Anodes communes ce qui oblige à les piloter en Logique négative. La désignation des segments est proposée sur le dessin de la Fig.58 et les caractéristiques sont disponibles dans le document fournisseur LTP587HR.pdf du sous-dossier <Composants>. Pour proposer un exercice vraiment simple, le démonstrateur Experience_029.ino propose un petit dérivatif qui consiste à faire tourner un « rayon » en utilisant les huit segments « intérieurs ». Le programme qui entre dans la catégorie des automatismes aveugles est simplifié au maximum. Dans ce but, les huit BITs du PORT D servent de sorties binaires, le câblage étant résumé dans le tableau de la Fig.59 sachant qu’entre chaque sortie D0 à D7
et les segments piloté est intercalée une résistance de limitation de courant de 1kΩ.

Expérience 030 : Texte sur afficheur 16 segments.

Dernière expérience sur les afficheurs « individuels », nous allons avec Experience_030.ino utiliser pleinement les possibilités du LTP-587HR toujours dans un automatisme aveugle agencé en Logique négative. C’est parfaitement faisable sur Arduino, y compris si on réserve D0 et D1 aux téléversements. Il suffit par exemple de respecter le tableau de la Fig.60 qui précise les affectations choisies pour P030. Facile en théorie de passer de huit à dix-sept résistances montées « en épingles » sur une plaquette à essais. Mais c’est un sacré bazar et tout le monde n’aura pas forcément tous ces composants de disponibles dans ses stocks. C’est la raison pour laquelle avant de basculer « dans cette complexité », il m’a semblé plus opportun de vous proposer au préalable l’amusement de P029. Pour des raisons de disponibilité, ce sont des résistances de 470Ω qui ont été installées amenant le courant par segment à 5,5mA environ et une bonne luminosité. Lorsque tous les segments sont allumés, on arrive à un total d’environ 100mA très en dessous des 200mA acceptable par une carte Arduino. Grâce à une plus grande définition qu’un module à sept segments, le LTP-587HR autorise pratiquement tous les caractères de notre écriture. Un exemple est donné en Fig.61 pour l’alphabet et les chiffres et en Fig.62 pour la ponctuation. Cette police de caractère n’est pas exhaustive, bien d’autres combinaisons sont possibles. Toutefois, nous allons nous limiter dans ce démonstrateur Experience_030.ino aux lettres et aux chiffres … et c’est déjà pas mal ! (Car construire une police de caractères est vraiment rébarbatif et impose de nombreuses vérifications.) On remarque que pour ‘x‘ on retrouve l’empreinte du ‘X‘ majuscule. Il n’y a pas de miracle, avec seize segments les caractères sont forcément moins beaux que ceux formés dans une matrice de points 5 x 8. C’est la raison pour laquelle, la technologie LCD plus facile à mettre en œuvre à dès les débuts opté pour des mosaïques à ce format. Autant dire que pour effectuer cette manipulation il faut procéder avec méthode, broche par broche sur la carte Arduino. Au départ la platine de branchement est assez déserte comme le montre Image 001.JPG dans le dossier <IMAGES>. Puis on va ponter broche par broche comme montré sur Image 002.JPG en vérifiant bien à chaque segment. Personnellement je commence pas installer la résistance « en épingle » et la relie à l’afficheur. Puis, avant de brancher sur la sortie d’Arduino, le module étant sous tension pour les téléchargements des programmes objets, je commence par tester s’il s’agit du bon segment en pointant le point chaud de la ligne sur le +5Vcc. Vérification effectuée, on passe à la broche de sortie suivante sur Arduino. Tous ces fils finissent par être un peu délicats à insérer les uns contre les autres, et surtout, si on a commis une erreur, c’est particulièrement lourd à corriger. Alors … bon courage !!!
L’afficheur semble un peu perdu dans cette jungle de fils électriques, mais sur Image 003.JPG on constate que finalement on peut aisément le dégager.

Ya une erreur nom d’un pétard mouillé !

Afficheur branché conformément à la Fig.60 téléverser P030 et observer le résultat. Le point décimal clignote rapidement alors que les segments font défiler toutes les secondes un nouveau caractère en commençant par les chiffres, puis les lettres majuscules et enfin les minuscules. La police de caractères utilisée respecte celle décrite en Fig.61 … mais nom d’une pipe en bois d’ébène, la lettre minuscule ‘f’ est erronée ! Vous avez tort de rigoler car c’est vous qui allez la corriger.
Pas de panique, nous allons procéder avec méthode et sérénité. Commençons par observer dans le programme TABLEAU[62] qui conserve dans l’ordre les empreinte des 62 caractères qui y figurent. Pour établir la TABLE DE VÉRITÉ de notre police de caractères on va caractère par caractère établir la correspondance entre l’agencement de la Fig.60 et les valeurs binaires à imposer sur les 16 sorties sélectionnées sur Arduino. Nous allons comme exemple sur la Fig.63 analyser la table de vérité pour la lettre ‘B‘ majuscule. Bien que le pilotage soit en logique négative dans la procédure Afficher_un_caractere(), les empreintes contiendront des « 1 » pour les segments allumés et des « 0 » pour ceux qui doivent rester éteints. (Ce choix est libre utilisateur et je préfère pour construite le tableau raisonner en logique positive.) Pour afficher le ‘B‘ majuscule il faut allumer les segments A, B, C, D, E, F, P et S, d’où la table de vérité de la Fig.63 les sorties étant placées dans l’ordre croissant des poids binaires de la droite vers la gauche de façon classique. Il aurait été convivial d’établir la table de vérité directement en binaire sous l’écriture B100100011100000 ou encore mieux avec B1001000-11100000 mais pour des raisons que je n’ai pas réussi à élucider ce jour le compilateur refuse. J’ai donc à regrets décidé de lui définir TABLEAU[62] sous forme décimale acceptée sans problème. Berk berk berk, il faut transposer les soixante deux caractères en décimal une fois que les tables de vérité montrées sur Image 004.JPG et sur Image 005.JPG ont été établies. Le principe est simple, il suffit d’ajouter les poids binaires pour les segments d’état logique « 1« . Pour le ‘B‘ on obtient l’équivalent décimal avec 1 + 2 + 4 + 8 + 16 + 32 + 512 + 4096 + 16384. Avec un rapide calcul mental on aboutit à la valeur décimale équivalente de 21055 que vous retrouvez en deuxième position des lettres majuscules. Il ne reste plus qu’à reprendre ce petit calcul élémentaire pour l’intégralité de la table de vérité.
BERK, BERK, BERK … ou aller sur :

Maintenant que vous savez comment s’y prendre, je vous propose deux exercices :
• Commencer par corriger l’erreur en ligne 51 pour rétablir le ‘f‘ correct.
• Ajouter à notre police de caractère la ponctuation définie en Fig.62 ce qui vous obligera au préalable à en établir la table de vérité. Pour vous aider dans cette étape vous trouverez dans <Documents> la grille nommée Table de vérité.pdf. N’oubliez-pas d’augmenter la taille de TABLEAU[82], et de passer à 82 la valeur de 62 en ligne 76 du programme.

La suite est ici.