Overblog Suivre ce blog
Editer l'article Administration Créer mon blog
20 mai 2012 7 20 /05 /mai /2012 22:50

J'ai profité d'une semaine de 3 jours de boulot pour bien avancer l'horloge.

J'avais hâte d'essayer l'afffichage.

J'ai dû commencer par déterminer le brochage de la mini-matrice BL-M07C881 car manifestement il ne correspond pas à la datasheet!

Comme je l'ai indiqué sur le forum d'Adafruit, le brochage déterminé manuellement  est, avec la matrice (LED) faisant face à l'utilisateur:

Cx: colonne x

Lx: ligne x

 

C8 C7 L2 C1 L4 C6 C4 L1


L5 L7 C2 C3 L8 C5 L6 L3
(face imprimée en bas)

J'ai câblé cette matrice sur une autre breadboard et sorti 2 connecteurs pour respectivement les colonnes et les lignes (cathodes).

Restait plus qu'à câbler le Max7219

 

Aujourd'hui j'ai passé une bonne partie de la journée à développer le code qui tranforme une heure en une série de LED allumées.

Pour cela j'utilise la fantastique librairie LedControl.

Le plus gros du travail consiste alors à déterminer les règles d'allumage de chaque LED.

J'initialise un tableau de 8 bytes (même si je n'utlise que 5 lignes sur 8 pour mon horloge).

Chaque byte est une ligne de la matrice.

Mes règles d'affichage font des OR pour mettre à 1 les bits correspondants aux LED à allumer selon l'heure.

Une fois la matrice calculée j'ai une boucle qui pour chaque ligne appelle la fonction setRow(0,row,value) de LedControl.

Simple!

 

D'ailleurs c'est en codant mes règles d'allumage de LED que je me suis aperçu que mon cadrant avait un problème: il y manquait 'minuit'! J'ai donc remplacé les 2 caractères inutilisés qui indiquaient le nom de l'horloge, par ceux utilisés pour dire minuit (les 2 premiers caractères de la seconde ligne, et ça se lit 'banne yé', littérallement, "le milieu de la nuit').

 

L'intégration du code de pilotage de la matrice de LED au reste du code de l'horloge est en cours et j'ai pas mal de changements par rapports à mes projets initiaux, mais ça commence à fonctionner.

Voici par exemple une photo prise à 9h37 du soir.

La première ligne indique "il est, le soir", la troisième "9 heures", la quatrième "30" et la cinquième "7":

P1060974.JPG

 

Le Max7219 brouille complètement la réception DCF77!

Je vais voir de combien je dois éloigner le circuit pour que ça fonctionne.

Sinon, comme me l'a suggéré une personne rencontrée sur le forum Arduino dont j'aurai certainement l'occasion de reparler je n'activerais la réception DCF77 que lorsque l'horloge sera en mode veille.

 

Je pilote l'intensité des LED depuis l'info de luminosité captée par la LDR.

L'étalonnage a l'air pas trop mal. Faudra affiner une fois la vraie matrice construite et en condition d'éclairage réelles (c'est à dire dans mon salon).

 

J'ai aussi intégré le détecteur de mouvement à infra-rouge.

Il permet d'éteindre l'horloge (et plus tard de mettre le micro-contrôleur en sommeil) quand aucun mouvement n'a été détecté dans la pièce pendant un certain temps.

 

J'ai fait une petite vidéo pour montrer l'affichage en action.

C'est avec la première version du mini-cadrant, celle qui m' a permis de détecter qu'il y manquait 'minuit'.

La vidéo montre à une cadence accélérée (.5s pour 1s) les heures entre 12h et 13h:

http://www.youtube.com/watch?v=2WQThQBpPCY


 

Partager cet article

Repost 0
Published by breizhmakers - dans horloge
commenter cet article

commentaires