ESP32 - Écran OLED SSD1309 128x64 | Tutoriel OLED I2C de 2,42 pouces
Un écran OLED (diode électroluminescente organique) offre des pixels auto-émissifs qui produisent des noirs profonds, un contraste élevé et de larges angles de vision — ce qui en fait une excellente amélioration par rapport aux LCD traditionnels. Le SSD1309 est le circuit intégré de pilotage couramment trouvé sur des modules OLED I2C 128×64 de 2,42 pouces (parfois étiquetés 2,4 pouces).

Dans ce guide étape par étape, vous apprendrez comment connecter et programmer le SSD1309 OLED 128×64 avec une carte ESP32 en utilisant la bibliothèque DIYables_OLED_SSD1309. Plus précisément, nous aborderons :
- Câblage du OLED SSD1309 de 2,42 pouces à l'ESP32 via I2C
- Affichage du texte et des chiffres sur l'écran
- Centrage du texte verticalement et horizontalement
- Dessiner des formes géométriques (lignes, rectangles, cercles, triangles, rectangles arrondis)
- Affichage d'images bitmap monochromes
- Défilement matériel dans les quatre directions
- Ajuster le contraste et diminuer la luminosité de l'écran
- Utiliser des polices externes personnalisées issues de la collection de polices Adafruit GFX
Préparation du matériel
Ou vous pouvez acheter les kits suivants:
| 1 | × | Kit de Démarrage DIYables ESP32 (ESP32 inclus) | |
| 1 | × | Kit de Capteurs DIYables (30 capteurs/écrans) | |
| 1 | × | Kit de Capteurs DIYables (18 capteurs/écrans) |
À propos de l'écran OLED SSD1309 de 2,42 pouces
Le SSD1309 est un circuit intégré pilote OLED CMOS à une seule puce conçu pour des panneaux à matrice de points 128×64. Il est compatible au niveau des registres avec le SSD1306, largement utilisé, de sorte que de nombreux exemples de code existants peuvent être réutilisés avec peu de modifications. Les principales différences matérielles sont les suivantes :
- Pas de pompe à charge intégrée — le SSD1309 nécessite une alimentation VCC externe, bien que pratiquement toutes les cartes breakout (y compris les modules de 2,42 pouces et 2,4 pouces) soient livrées avec un convertisseur boost intégré, ce qui vous est transparent.
- Tolérance de tension plus élevée — le SSD1309 accepte jusqu'à 16 V VCC, alors que le SSD1306 est limité à environ 4,2 V.
Le module OLED de 2,42 pouces (2,4 pouces) utilise généralement le pilote SSD1309 et offre une résolution de 128×64 pixels avec une interface I2C. La couleur du panneau (blanc, bleu, jaune, vert ou zone double) est déterminée par le matériau OLED physique et n'est pas contrôlable par logiciel.
Ce tutoriel communique avec l'affichage via le I2C bus, qui ne nécessite que deux fils de signalisation (SDA et SCL) et peut partager le bus avec d'autres périphériques I2C.
Schéma des broches de l'OLED SSD1309 (Module I2C)
Le module OLED I2C SSD1309 typique de 2,42 pouces expose quatre broches :
- Broche GND : doit être connectée à la masse de l'ESP32
- Broche VCC : doit être connectée à la broche 3,3 V ou 5 V de l'ESP32 (vérifiez les spécifications de votre module)
- Broche SCL : est une broche d'horloge I2C. Connectez-la à la GPIO 22 (SCL par défaut)
- Broche SDA : est une broche de données I2C. Connectez-la à la GPIO 21 (SDA par défaut)

※ Note:
L'ordre des broches peut varier d'un fabricant à l'autre. Vérifiez toujours les étiquettes imprimées sur votre module OLED.
Diagramme de câblage
- Comment connecter l'ESP32 à l'écran OLED SSD1309 128x64 en utilisant une breadboard

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Si vous ne savez pas comment alimenter l'ESP32 et d'autres composants, consultez les instructions dans le tutoriel suivant : Comment alimenter l'ESP32..
- Comment connecter l'ESP32 à l'écran OLED SSD1309 128x64 en utilisant une carte d'extension à bornes à vis

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Comment programmer l'ESP32 pour l'écran OLED SSD1309
Installer la bibliothèque DIYables_OLED_SSD1309
La bibliothèque DIYables_OLED_SSD1309 est spécialement conçue pour les écrans SSD1309 et étend Adafruit_GFX pour un support graphique plus riche.
- Ouvrez l'IDE Arduino
- Accédez à l'icône Bibliothèques dans la barre latérale gauche
- Recherchez DIYables_OLED_SSD1309
- Cliquez sur Installer
- Une fenêtre de dépendances apparaîtra — cliquez sur Tout installer pour installer également la Adafruit GFX Library (nécessaire pour le dessin des formes et les polices)

Étapes de programmation
- Incluez les bibliothèques requises
- Définir les dimensions de l'écran
- Déclarez l'objet d'affichage
- Initialiser l'OLED dans setup()
- Afficher le contenu
Code ESP32 — Bonjour le monde sur l'écran OLED SSD1309
Le point de départ le plus simple : imprimer quelques lignes de texte à des tailles différentes.
Code ESP32 — Affichage du texte sur l'OLED SSD1309
L'exemple suivant illustre davantage de fonctionnalités liées au texte — plusieurs tailles, le formatage des nombres et la macro F() pour économiser de la RAM.
Référence des fonctions d'affichage utiles
Ci-dessous figure une liste de référence rapide des fonctions les plus fréquemment utilisées lors de l'utilisation de l'OLED SSD1309 via la bibliothèque DIYables :
- oled.clearDisplay() — effacer le tampon d'affichage (tous les pixels éteints).
- oled.display() — transférer le tampon vers l'OLED afin que les modifications soient visibles.
- oled.drawPixel(x, y, color) — définir ou effacer un pixel individuel.
- oled.setTextSize(n) — agrandir la police par le facteur *n* (1 = 6×8, 2 = 12×16, …, jusqu’à 8).
- oled.setCursor(x, y) — déplacer le curseur de texte vers les coordonnées en pixels *(x, y)*.
- oled.setTextColor(SSD1309_PIXEL_ON) — couleur du texte uniquement (l'arrière-plan est transparent).
- oled.setTextColor(SSD1309_PIXEL_OFF, SSD1309_PIXEL_ON) — texte avec une couleur d'arrière-plan explicite.
- oled.println("message") — afficher une chaîne et passer à la ligne suivante.
- oled.println(number) — afficher un entier en décimal.
- oled.println(number, HEX) — afficher un entier en hexadécimal.
- oled.startscrollright(start, stop) — début du défilement matériel vers la droite entre la page *start* et la page *stop*.
- oled.startscrollleft(start, stop) — début du défilement matériel vers la gauche.
- oled.startscrolldiagright(start, stop) — début du défilement matériel en diagonale vers la droite.
- oled.startscrolldiagleft(start, stop) — début du défilement matériel en diagonale vers la gauche.
- oled.stopscroll() — arrêter tout défilement matériel actif.
- oled.setContrast(value) — Ajuster la luminosité de l'affichage (0–255).
- oled.dim(true/false) — assombrir rapidement l'affichage au minimum ou restaurer le contraste précédent.
- oled.invertDisplay(true/false) — inversion des couleurs au niveau matériel (pixels allumés ↔ pixels éteints).
Comment centrer verticalement et horizontalement le texte sur l'écran OLED SSD1309
Voir Comment centrer verticalement et horizontalement sur un écran OLED
Code ESP32 — Dessiner des formes sur l'OLED SSD1309
Parce que la bibliothèque DIYables_OLED_SSD1309 étend Adafruit_GFX, vous obtenez un ensemble complet de primitives de dessin de formes : pixels, lignes, rectangles, rectangles remplis, cercles, cercles remplis, triangles, triangles remplis et rectangles arrondis. Le sketch ci-dessous parcourt tous ces éléments avec des démonstrations animées.
Code ESP32 — Défilement matériel sur l'écran OLED SSD1309
Le SSD1309 dispose d'un moteur de défilement intégré qui déplace le contenu de l'affichage sans charge du processeur. La bibliothèque DIYables expose quatre directions de défilement : droite, gauche, diagonale droite et diagonale gauche. Chacune prend un paramètre de page de départ et de page d'arrêt (les pages sont des bandes horizontales de 8 pixels de hauteur numérotées de 0 à 7 sur un écran de 64 pixels de hauteur).
※ Note:
Appelez toujours display() pour afficher votre contenu sur l'OLED avant de démarrer le défilement. Évitez d'afficher du nouveau contenu pendant que le défilement est actif — appelez stopscroll() d'abord.
Code ESP32 — Afficher une image bitmap sur l'écran OLED SSD1309
Pour afficher une bitmap sur l'écran OLED SSD1309, vous devez d'abord convertir votre image en un tableau d'octets en C. Utilisez l'outil en ligne gratuit image2cpp online tool pour cette conversion :
- Téléchargez votre fichier image (PNG, JPG, BMP, etc.).
- Réglez la taille du canevas à 128 × 64 (ou moins).
- Choisissez le code Arduino comme format de sortie.
- Copiez le tableau généré dans votre croquis.

L'exemple ci-dessous alterne entre une icône cœur 16×16 et un logo DIYables en pleine largeur.
※ Note:
- Les dimensions du bitmap ne doivent pas dépasser la résolution de l'écran (128 × 64 pour le module de 2,42 pouces).
Code ESP32 — Contraste et réduction de la luminosité sur l'OLED SSD1309
Le SSD1309 prend en charge 256 niveaux de contraste (0 à 255). La bibliothèque DIYables fournit setContrast() pour un contrôle précis et dim() pour basculer rapidement entre la luminosité minimale et le niveau configuré précédemment.
Code ESP32 — Polices externes personnalisées sur l'écran OLED SSD1309
La bibliothèque Adafruit GFX est livrée avec des dizaines de polices de caractères FreeFont évolutives (Serif, Sans, Mono — chacune en Regular, Bold, Italic, et quatre tailles). Vous pouvez activer l'une d'entre elles sur l'affichage SSD1309 en incluant l'en-tête correspondant et en appelant setFont().
※ Note:
- Lorsqu'une police externe est active, la coordonnée Y du curseur fait référence à la ligne de base du texte, et non au coin supérieur gauche. Cela diffère de la police intégrée 5×7.
- Les polices externes sont stockées dans la mémoire flash (PROGMEM). L'ESP32 dispose d'une grande mémoire flash, alors n'hésitez pas à utiliser plusieurs fichiers de police dans votre projet.
Dépannage OLED SSD1309 avec ESP32
Si rien n'apparaît sur l'écran OLED SSD1309 de 2,42 pouces après avoir téléversé votre sketch, suivez ces vérifications :
- Vérifier le câblage — confirmer que SDA, SCL, VCC et GND sont connectés aux broches ESP32 correctes.
- Confirmer le contrôleur — cette bibliothèque est conçue pour le SSD1309. Si votre module utilise un contrôleur différent (par exemple SH1106), il ne répondra pas correctement.
- Vérifier l'adresse I2C — la plupart des modules SSD1309 par défaut utilisent 0x3C, mais certains utilisent 0x3D. Exécutez le sketch de scanner I2C ci-dessous pour détecter l'adresse réelle:
Sortie attendue du moniteur série lorsque le SSD1309 est détecté :
- Assurez-vous que display() est appelé — le SSD1309 utilise un tampon d'affichage. Les fonctions de dessin ne modifient que ce tampon dans la RAM; rien n'apparaît à l'écran tant que vous n'appelez pas oled.display().
- Vérifiez l'alimentation — le module de 2,42 pouces consomme plus de courant que les petits OLED. Assurez-vous que votre source d'alimentation peut délivrer un courant suffisant (typiquement 20–40 mA à pleine luminosité). Si vous utilisez une alimentation USB, cela ne pose généralement pas de problème avec l'ESP32.
- Broches I2C personnalisées (optionnel) — Si vous devez utiliser des broches I2C non par défaut, initialisez Wire avec Wire.begin(SDA_PIN, SCL_PIN) avant d'appeler display.begin().
Conclusion
Ce guide a couvert l'ensemble des éléments essentiels pour l'utilisation de l'écran OLED SSD1309 de 2,42 pouces (128×64) avec l'ESP32, y compris :
- Connexions matérielles et câblage I2C
- Affichage de texte et de nombres de plusieurs tailles
- Dessin de formes (rectangles, cercles, triangles)
- Affichage d'images bitmap
- Défilement matériel dans les quatre directions
- Contrôle du contraste et de la luminosité
- Polices externes personnalisées
La bibliothèque DIYables_OLED_SSD1309 simplifie la programmation du SSD1309 en fournissant des fonctions de haut niveau pour le texte, les graphismes et le contrôle de l'affichage, tout en tirant parti d'Adafruit GFX pour des capacités de dessin étendues.
Pour plus de projets et de tutoriels ESP32, visitez esp32io.com