vendredi 15 juillet 2022

Écran OLED SSD1306 et Raspberry Pi Pico (micropython)

Dans cet article, nous étudions l'utilisation d'un petit écran OLED SSD1306 I2C avec un Raspberry Pi Pico programmé en micropython. 

J'ai utilisé un écran OLED dont la résolution est 128 X 32, mais les exemples pourront facilement être modifiés pour un résolution de 128 X 64. Si vous cherchez plutôt des informations pour un écran OLED à base de SH1106, j'ai déjà publié un article à ce sujet.


Connexions de l'écran au Raspberry Pi Pico

Il s'agit d'un modèle I2C, qui comporte donc 4 connecteurs (deux pour l'alimentation, et deux pour la communication avec le Pico).

J'ai branché l'écran OLED de la façon suivante:

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


Installation du pilote SSD1306.py

Nous allons utiliser le pilote pour micropython SSD1306. Le fichier "ssd1306.py" doit être copié dans le Raspberry Pi Pico.



Afficher du texte et des formes géométriques simples

Le module framebuf de micropython nous fournit des méthodes qui permettent d'écrire du texte et de tracer des formes géométriques à l'écran. 

Ainsi, si je programme "oled.text('BONJOUR',20,10)", le mot "BONJOUR" sera affiché. Le début du mot sera positionné au 20e pixel horizontal et au 10e pixel vertical.

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

Les changements ne sont visibles à l'écran que lorsque qu'on écrit "oled.show()".

Voici un script qui affiche un peu de texte (parfois défilant), ainsi que quelques lignes:

-

-

Cette séquence vidéo montre le résultat sur l'écran OLED:


Afficher une image bitmap

On peut aussi afficher une image bitmap stockée dans un fichier.


Dans ce cas, il faut produire une image monochrome de format .pbm ayant une résolution maximale de 128 X 32 pixels.

Voici un exemple de conversion d'image réalisée avec le logiciel Gimp. L'image de départ était en couleur, avec une définition bien meilleure que 128 X 32 pixels.


J'ai sélectionné le menu Image / Mode / Couleurs Indexées.  Dans la boîte de dialogue, j'ai choisi "Utiliser un palette noir et blanc (1-bit)".



Ensuite, je choisi le menu Image / Échelle et taille de l'image... Dans la boîte de dialogue, on règle les dimensions de l'image à un maximum de 128 pixels de largeur et 32 pixels de hauteur.


Sur l'écran OLED, les parties noires de l'image seront affichées en blanc, et les parties blanches seront en noir. Si ce n'est pas ce que vous désirez, vous pouvez inverser l'image grâce au menu Couleurs / Inverser.

(si vous préférez, il est également possible de programmer le Raspberry Pi Pico pour que les couleurs soient inversées :  oled.invert(1) )


J'ai finalement utilisé le menu Fichier / Exporter sous ... et j'ai choisi un nom de fichier qui se termine par l'extension ".pbm" (il faut choisir un formatage de type "Raw" et non "ASCII").

Ce fichier de format pbm doit être enregistré dans le Raspberry Pi Pico avant l'exécution du script ci-dessous.


Voici le script en micropython qui permet l'affichage de l'image bitmap sur l'écran OLED:

-

-

À lire également:

Yves Pelletier (Facebook)



1 commentaire:

  1. Bonjour,
    Pourriez-vous éventuellement préciser l'intérêt d'un
    Écran OLED SSD1306 par rapport à un OLED à base de SH1106 pour une utilisation en micro-python sur un raspberry w ?
    En vous remerciant.

    RépondreSupprimer