Afficheur OLED SSD1306 I2C 128×64 0.96″ Jaune et Bleu

Afficheur OLED SSD1306 I2C 128×64 0.96″ Jaune et Bleu



Comment trouver l’adresse de l’écran SSD1306 sur le bus I2C ?


Avant de pouvoir utiliser l’écran OLED SSD1306, il va falloir configurer le port sur lequel celui-ci ce trouve sur le bus I2C. Pour cela, Nick Gammon’s a développé un petit programme Arduino pour trouver le port I2C sur lequel est branché l’écran OLED. Le programme scrute en boucle et recherche les appareils I2C connectés au port série toutes les 5 secondes mais on peut ajuster le délai de rafraichissement en ajustant le délai en fin de boucle.





Rappel : comment installer une librairie sur l’IDE Arduino ?


Pour ceux qui découvrent l’IDE Arduino, vous aurez besoin d’ajouter des librairies pour faire fonctionner l’écran OLED. Certaines librairies sont directement disponibles depuis le gestionnaire de librairies. C’est le cas par exemple de la librairie Adafruit pour le SSD1306. Dans le menu croquis, aller dans Inclure une bibliothèque puis Gérer les bibliothèques.



D’autres bibliothèques sont disponibles sur GitHub. C’est par exemple le cas de la bibliothèque (library en anglais) de Sparkfun. Dans ce cas, commencez par télécharger la librairie mais ne compressez pas le Zip. Ensuite, allez dans Croquis -> Inclure une librairie -> Ajouter la bibliothèque .ZIP et choisissez le zip de la librairie à importer.


ide arduino importer librairie


Vous pouvez maintenant aller dans Fichier -> Exemples pour découvrir les exemples proposés dans la librairie.


ide arduino exemple librairie


Pour utiliser une librairie dans vos projets, déclarez la en début de projet, par exemple



Test des librairies Adafruit et Sparkfun pour piloter un écran OLED SSD1306


Pour gérer l’affichage sur votre écran OLED, il y a plusieurs librairies Open Source à notre disposition. Pour cet article, je vais vous présenter les deux principales. La librairie développée par Adafruit et celle de Sparkfun.


Librairies Adafruit_GFX et Adafruit_SSD1306


Adafruit a développé une librairie très puissante qui va nous permettre de gérer l’affichage de notre mini écran mais aussi de tracer plein de chose très facilement grâce à la librairie dédiée, GFX Library. Vous pouvez récupérer la librairie Adafruit SSD1306 sur le github https://github.com/adafruit/Adafruit_SSD1306 et la librairie GFX ici https://github.com/adafruit/Adafruit-GFX-Library/archive/master.zip.


Attention. Il est nécessaire d’inclure les 2 librairies dans votre projet. Pour gagner quelques précieux octets, vous pouvez utiliser la librairie Micro_OLED de Sparkfun décrite dans le prochain paragraphe.


Liste des fonctions de la librairie disponibles


Fonctions de la librairie Adafruit_SSD1306
Adafruit_SSD1306 display(OLED_RESET) initialise l’objet display(Pin pour le reset)
display() Actualise l’affichage
clearDisplay() Efface l’écran et le buffer
invertDisplay(bool) inverse l’affichage (true ou false)
Fonctions Adafruit_GFX
drawPixel(uint16_t x, uint16_t y, uint16_t color) Dessine un pixel en X,Y de la couleur color
drawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t color) Dessine une ligne de X1,Y1 à x2,Y2 de la couleur color
drawFastVLine(uint16_t x0, uint16_t y0, uint16_t length, uint16_t color)

drawFastHLine(uin86_t x0, uin86_t y0, uint8_t length, uint16_t color);

Tracé optimisé de lignes horizontales et verticales
drawRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t color)

fillRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t color)

Dessine un rectangle depuis X,Y de largeur w et hauteur h

idem mais plein

drawCircle(uint16_t x0, uint16_t y0, uint16_t r, uint16_t color)

fillCircle(uint16_t x0, uint16_t y0, uint16_t r, uint16_t color)

Dessine un cercle de centre X,Y et de rayon r

idem mais le cercle est plein

drawRoundRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t radius, uint16_t color)

fillRoundRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t radius, uint16_t color)

 Idem rectangle mais avec un arrondi de rayon raduis aux angles
drawTriangle(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color)

fillTriangle(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color)

Dessine un triangle en spécifiant les coordonnées de chaque sommets (x0,y1), (x2,y2), (x3,y3)
drawChar(uint16_t x, uint16_t y, char c, uint16_t color, uint16_t bg, uint8_t size) Dessine un caractère en x,y
drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, int16_t h, uint16_t color)  Affiche un bitmap en x,y de largeur w et hauteur t
fillScreen(uint16_t color);  Colorie entièrement l’écran dans la couleur spécifiée
setRotation(uint8_t rotation)  Rotation de l’affichage : 0 -> 0°, 1 -> 90°, 2 -> 180°, 3 -> 270°


Le paramètre color permettant de définir la couleur d’affichage uniquement sur les écrans couleur est disponible dans toutes les fonctions graphiques de la librairie GFX. Pour plus d’informations, vous pouvez consulter ce document de formation en anglais.


La librairie Adafruit_GFX est utilisée par d’autres librairies dédiées à chaque (microcontroleur) écran.


Afficher du texte


L’affichage d’un texte demande un peu plus de travail. Il est nécessaire de modifier les paramètres d’affichage paramètre par paramètre. Voici un petit exemple pour afficher Hello Word en 0,0: