mercredi 13 février 2019

Écran Nokia 5110 et MSP430 Launchpad

Dans ce billet, nous faisons fonctionner un petit écran monochrome de type "Nokia 5110" branché à un MSP430 Launchpad que nous programmons avec Energia.


 (N'hésitez pas à consulter mes précédents billets si vous souhaitez plutôt brancher cet écran à un Arduino ou à un Raspberry Pi).

Installation de la bibliothèque LCD_5110

Comme c'est trop souvent le cas avec le Launchpad, le lien officiel vers la bibliothèque LCD_5110 mise au point en 2012 par Rei Vilo n'est plus valide, ce qui a quelque peu compliqué mes recherches.  Je vous propose ce fichier zip, gracieuseté du blog de Joe Freeman. En plus des 4 fichiers qui constituent la bibliothèque LCD_5110 (LCD_5110.h, LCD_5110.cpp, Terminal6.h et Terminal12.h), l'archive inclut également un petit programme qui affiche la température sur l'écran Nokia (LCD_5110_430.ino) et une deuxième bibliothèque permettant de lire la température du msp430 (Thermometer_430.h et Thermometer_430.cpp). Si par hasard le lien devenait invalide, vous pouvez aussi trouver les fichier nécessaires sur le dépôt github de cyoung.

Notez que, puisque cette bibliothèque a été conçue pour les versions bas de gamme du Launchpad (qui ont une mémoire limitée), elle permet uniquement d'afficher du texte à l'écran. Vous ne pouvez pas l'utiliser pour dessiner des formes géométriques, afficher des images bitmap, etc (si c'est ce qui vous intéresse, et à la condition de disposer d'un Launchpad suffisamment puissant, cette autre bibliothèque, que je n'ai pas testée, pourrait vous intéresser).

Modification de la bibliothèque

Les modèles de Launchpad n'étaient pas très nombreux en 2012, et l'auteur de la bibliothèque n'a donc prévu que trois options possibles:  MSP430G2452, MSP430G2553 et MSP430G2231. Si vous désirez utiliser la bibliothèque avec un modèle plus récent, une petite modification au fichier "LCD_5110.h" s'avère nécessaire.

À la ligne #20, le fichier Energia.h est inclus à la condition que vous compiliez le programme pour un des trois microcontrôleurs pré-cités:


J'ai réglé le problème en retirant la condition "#elif defined(__MSP430G2452__) || defined(__MSP430G2553__) || defined(__MSP430G2231__)" afin que l'instruction #include "Energia.h" soit toujours exécutée, peu importe le modèle de Launchpad.

J'ai testé avec succès cette version modifiée de la bibliothèque avec trois modèles de Launchpad: le classique MSP-EXP430G2 (comportant le MSP430G2553), le MSP430FR2433, et le Stellaris (lm4f120).

Connexions

Vous pouvez utiliser les broches que vous voulez, elles seront déclarées dans le sketch. Voici celles que j'ai utilisées:
  • Broche 1. VCC du module Nokia 5110 --- VCC (3,3 V) du Launchpad
  • Broche 2. GND du module Nokia 5110 --- GND du Launchpad
  • Broche 3. SCE (chip select) du module Nokia 5110 --- P1.4 du Launchpad
  • Broche 4. RST du module Nokia 5110 --- P1.5 du Launchpad
  • Broche 5. D/C du module Nokia 5110 --- P2.0 du Launchpad
  • Broche 6. DN (MOSI) du module Nokia 5110 --- P2.1 du Launchpad
  • Broche 7. SCLK du module Nokia 5110 --- P2.4 du Launchpad
  • Broche 8. LED du module Nokia 5110 (rétroéclairage) --- je ne l'ai pas branchée

Sketch

Les principales méthodes de la classe "LCD_5110" sont:
  • begin() : initialisation de l'écran
  • clear() : efface le contenu entier de l'écran
  • setFont(int taille): règle la taille de la police de caractère (0 pour taille normale, 1 ou 2 pour plus gros).
  • text(int x, int y, "texte à afficher"): écriture d'une chaîne de caractères à la position x, y

Voici un sketch qui affiche un nombre entier qui augmente d'une unité à chaque seconde. Les parties statiques (en haut et en bas de l'écran) sont écrites au démarrage du programme (dans setup()) alors que le nombre est mis à jour à l'intérieur du loop().

Un aspect intéressant de cette bibliothèque, c'est qu'il n'est pas nécessaire d'effacer le nombre précédent avant d'écrire le nouveau nombre: ce que vous écrivez remplace simplement ce qui était précédemment écrit à la même position.

Pour me compliquer un peu la vie, j'ai choisi de centrer le nombre horizontalement, ce qui m'oblige à déterminer le nombre de chiffres à afficher avant de décider de l'endroit, sur l'écran, où j'écris le nombre.


Yves Pelletier   (TwitterFacebook)

Aucun commentaire:

Publier un commentaire