mercredi 14 avril 2021

Écran OLED SH1106 et Pico

Dans cet article, je programme le Raspberry Pi Pico en MicroPython afin d'afficher des images et du texte sur un petit écran OLED I2C de 128X64 pixels (contrôleur SH1106).


Connexions

Quatre connections sont suffisantes pour brancher l'écran OLED au Pico:

  • Broche GND de l'écran: une des broches GND du Pico
  • Broche VCC de l'écran: sortie 3,3 V du Pico
  • Broche SCL de l'écran: broche GP9 du Pico
  • Broche SDA de l'écran: broche GP8 du Pico

Installation du driver SH1106

Nous utiliserons ce driver spécialement conçu pour contrôler le SH1106 en MicroPython. Le fichier sh1106.py doit être copié dans le Pico pour que nos scripts fonctionnent. 

Comment s'y prendre? Vous ouvrez le fichier sh1106.py avec Thonny, et vous choisissez "Enregistrer une copie..." dans le menu "Fichier".


... et vous choisissez "appareil MicroPython".


Écrire du texte

Pour afficher du texte à l'écran, on utilise la méthode text. Par exemple, l'expression "oled.text("Bonjour", 10, 15)" affichera le mot "Bonjour". Le début du mot se trouvera à la position horizontale 10 pixels et à la position verticale 15 pixels.



Dessiner des formes géométriques simples

Il est possible de dessiner quelques formes géométriques de base:
  • hline pour tracer une droite horizontale
  • vline pour tracer une droite verticale
  • line pour tracer une droite
  • rect pour tracer un rectangle
  • pixel pour régler un seul pixel
  • fill pour remplir tout l'écran en noir ou en blanc
Pour toutes ces méthodes, le dernier argument est la couleur: 0 pour noir et 1 pour blanc.

Exemple de script

Le script ci-dessous affiche d'abord une charmante comptine...



...puis un rectangle, un cercle et quelques droites.


-
-


Afficher une image bitmap

Pour des images plus complexes, il est possible d'afficher un bitmap. La solution la plus efficace, à mon avis, consiste à enregistrer l'image dans un fichier .pbm et à copier ce fichier dans le Pico.



Création du fichier pbm

Pour transformer une photographie ou une illustration en format pbm, j'ai utilisé le logiciel GIMP.


Tout d'abord, on sélectionne le menu Image / Mode / Couleurs Indexées.

Dans la boîte de dialogue, on choisit "Utiliser un palette noir et blanc (1-bit)":


À cette étape, il n'y a plus de couleurs, ni de niveaux de gris:


Ensuite, on choisit le menu Image / Échelle et taille de l'image...

Dans la boîte de dialogue, on s'assure que les dimensions de l'image ne sont pas supérieures à celle de l'écran (dans mon cas, c'est un maximum de 128 pixels de largeur et de 64 pixels de hauteur).



La définition de l'image a beaucoup diminué, mais elle correspond à celle de notre écran OLED:


Les parties qu'on voit en noir sur l'image d'origine apparaîtront en blanc sur l'écran OLED, et vice-versa. Si on veut éviter ça, on choisit le menu Couleurs / Inverser.


Il ne reste plus qu'à enregistrer le résultat en format pbm: menu Fichier / Exporter sous ... et on choisit un nom de fichier qui se termine par l'extension ".pbm".

Il faut choisir "Raw" et non ASCII.




Copie du fichier pbm dans le Pico

Pour transférer le fichier dans le Pico, on peut utiliser Thonny.

On s'assure que "Fichiers" est coché dans le menu "Affichages":


Du côté gauche de la fenêtre de Thonny, on peut voir, en haut, la liste des fichiers enregistrés dans le Pico ("appareil MicroPython") et, en bas, les fichiers qui se trouvent dans l'ordinateur. Lorsqu'on a localisé notre fichier .pbm, on fait un clic avec le bouton droit de la souris, et on choisit "Téléversement vers /": le fichier est transféré dans le Pico.



Script en MicroPython pour afficher le contenu du fichier pbm

Voici le script qui affichera sur l'écran OLED l'image stockée dans le fichier pbm (on suppose que ce fichier s'intitule "image.pbm".

-
-


Sources

Cet article sur le blog de Martin Fitzpatrick m'a été particulièrement utile pour l'affichage d'une image bitmap.


À lire également



Yves Pelletier (TwitterFacebook)

Aucun commentaire:

Enregistrer un commentaire