Dernière mise à jour :
30/10/2009
Article non terminé, volontairement non
référencé dans les sommaires du
site
Présentation
Vous connaissez sans doute déjà ce qu'est un journal lumineux, sans
savoir peut-être que cela s'appelle comme ça. Un tel objet se présente
sous la forme d'un plus ou moins grand rectangle, et est composé d'un
ensemble de lignes / colonnes de
leds qui permettent de faire
défiler un message
d'information.
On
en voit souvent dans les bus, dans les gares et
aéroports, et parfois même dans la vitrine de certains magasins.
Certains sont monochromes (une seule couleur et toujours la même) alors
que d'autres sont de type multicolore. Réaliser soi-même ce genre
d'équipement est très aisé si on se contente
d'un message fixe, mais devient complexe si un défilement des
caractères est souhaité, tout du moins si on refuse catégoriquement
l'usage de composant programmable et que l'on veut s'en tenir à de la
logique câblée. Il existe plusieurs méthodes pour obtenir un message
lumineux défilant, le présent projet en décrit une, qui s'appuie sur un
microcontrôleur de type PIC 16F628A.
Etat avancement
- Multiplexage affichage : terminé et fonctionnel, pour l'instant affichage fixe (non défilant).
- Génération (décomposition) des caractères alphanumériques : pas entièrement fini, seulement fait les 26 lettres de l'alphabet
Je ne sais pas si je finirai ce projet, un autre plus performant ayant enfin vu le jour :
Journal lumineux 002.
Avertisements
Je
n'ai jamais eu besoin de construire un tel engin pour mes besoins
personnels, mais le questionnement d'un collègue de travail sur ce
sujet m'a donné envie de m'y interresser. Celui-ci se demandait en
effet s'il était possible de concevoir un tel appareil, avec un clavier
d'ordinateur comme seul organe de commande pour saisir le texte à
afficher. Pour l'heure, je ne sais pas si ce projet aboutira. La
conception est une chose, et la réalisation et les tests en sont
d'autres. Le projet auquel je m'attèle là requiert la coquette somme
de 45 x 7 leds, je vous laisse calculer le total...
Schéma
Le
schéma de ce journal lumineux fait appel à du
multiplexage
d'affichage. Ce n'est pas réellement obligatoire pour ce type
de montage... mais il faut alors disposer d'une solide alimentation secteur !
Principe de base
Chaque
caractère alphanumérique (lettres, chiffres et caractères spéciaux tel
que trait d'union ou point d'interrogation) est dessiné sur une
matrice de 5 (colonnes) x 7
(rangées) de leds, de la même façon que je l'avais déjà fait avec ma
boitabak.
Le
fait que chaque caractère est affiché sur plusieurs colonnes autorise
leur défilement progressif et pas brutal, puisqu'il suffit de décaller
chaque colonne d'un (seul) cran vers la gauche.
Le
défilement des caractères n'est pas obligatoire si le message à
afficher est court, mais le devient bien si l'ensemble du texte déborde
de la capacité d'affichage.
Stockage des caractères
Afin
de pouvoir être affichés à l'endroit voulu, les caractères doivent être
"dessinés" et stockés en mémoire, et pouvoir être appelés à tout
instant. L'occupation mémoire requise pour leur stockage dépend du
nombre de leds affectées à chacun d'eux, qui dans le cas présent est de
35 bits (matrice 5 x 7). En pratique, l'occupation réelle est de 5
octets, ce qui correspond à 40 bits (5 x 8 bits), 5 bits n'étant
pas utilisés sur les 40. Ce qu'il faut comprendre ici, c'est qu'on ne
stocke pas des caractères "entiers", mais des "tranches
verticales" de caractère, cela est indispensable pour permettre un
défilement par pas de une colonne à la fois. Le mieux est de s'appuyer
sur un exemple concret, prennons par exemple le cas de la lettre "E".
Si
on regarde la première colonne de la matrice formant cette lettre, on
constate que toutes les leds sont allumées. Chaque led étant
représentée par un bit de donnée, et chaque colonne comportant sept
leds (sept bits), chaque colonne peut être stockée dans un octet de
huit bits. Par convention, disons que la led la plus haute de la
colonne correspont au bit de poids fort de l'octet, et que la led la
plus basse correspond au bit de poids faible. Dans ces contitions, on
peut dire que la valeur de l'octet représentant la première colonne du
caractère "E" est "01111111" en binaire, soit 7F en hexadécimal ($7F).
Notez bien encore une fois que le bit de poids fort est ici le septième
bit et non le huitième bit, puisque chaque colonne ne comporte que sept
leds et non huit. La valeur du huitième bit qui n'est pas utilisé peut
indifférement être 0 ou 1, j'ai choisi par convention de lui laisser
toujours la valeur 0. La valeur de l'octet qui représente la deuxième
colonne a pour valeur "01001001" ($49), cette valeur est la même pour
les colonnes 3 et 4. Et pour la cinquième colonne, valeur de "01000001"
($41).
Au total, si on compte les 26 lettres de l'alphabet, les
dix chiffres de 0 à 9 et une dizaine de caractères spéciaux, il nout
faut 46 x 5 octets, soit 230 octets, qui seront placés en ROM. Le ou
les messages à afficher seront quant à eux conservé en EEPROM, dont la
taille de 128 octets permettra un message de taille déjà conséquente
(256 octets avec un 16F648A).
Programmation du texte à afficher
Le
texte à afficher doit être saisi via un clavier
d'ordinateur de type PS2. Pour entrer le texte, procéder comme
suit :
1 - Basculer le système en mode programmation en fermant l'interrupteur SW1 / Prog.
2
- Saisir le texte souhaité, qui peut contenir les lettres de
l'alphabet, les chiffres de 0 à 9 et les caractères spéciaux classiques
tels que virgule, point, trait d'union, point d'exclamation, etc. Pour
effacer le dernier caractère entré, utiliser la touche Backspace
(retour arrière).
3 - Une
fois l'intégralité du texte souhaité saisi, appuyer sur la touche
Entrée. Cette action provoque la mise en mémoire du texte saisi, qui
sera ainsi conservé même après coupure secteur.
4 - Basculer le système en mode normal en ouvrant l'interrupteur SW1 / Prog.
Remarques - la lecture du clavier est entièrement désactivé en mode normal.
- si après avoir appuyé sur la touche Entrée, un nouveau texte est
saisi, il ne sera conservé en mémoire que si la touche Entrée est à
nouveau appuyée.
- la lecture du clavier impose une fréquence
d'horloge minimale de 6 MHz. C'est pourquoi je n'ai pas pu me contenter
d'utiliser l'oscillateur interne de 4 MHz, et ai choisi de cadencer
l'ensemble à 10 MHz.
Logiciel du PIC
Code source (MikroPascal Pro V2.50) et fichier
binaire compilé prêt à flasher (*.hex) disponibles
dans l'archive suivante.
Journal lumineux 001.zip - pour 16F628A (version du 07/08/2009)
Archive non disponible pour le moment
Si
vous souhaitez recevoir par la poste un PIC préprogrammé
et prêt à utiliser, merci de consulter la page
PIC - Sources.
Circuit imprimé
Non réalisé.
Historique
30/10/2009
- Première mise à disposition.