Arduino Nano ESP32 - Écran OLED SSD1309 128x64 | Tutoriel OLED I2C 2,42 pouces
Ce tutoriel fournit des instructions sur l'utilisation de l'OLED SSD1309 128×64 (2,42 pouces / 2,4 pouces) avec un Arduino Nano ESP32 via l'interface I2C et la bibliothèque DIYables_OLED_SSD1309. En détail, nous allons apprendre :
- Comment connecter l'OLED SSD1309 2,42 pouces à Arduino Nano ESP32 via I2C
- Comment programmer Arduino Nano ESP32 pour afficher du texte et des chiffres sur l'OLED SSD1309
- Comment centrer le texte verticalement et horizontalement sur l'OLED SSD1309
- Comment dessiner des formes géométriques sur l'OLED SSD1309
- Comment afficher des images bitmap monochrome sur l'OLED SSD1309
- Comment utiliser le défilement matériel dans quatre directions
- Comment ajuster le contraste et atténuer l'affichage
- Comment utiliser des polices personnalisées de la collection de polices Adafruit GFX

Matériel nécessaire
Ou vous pouvez acheter les kits suivants:
| 1 | × | Kit de Capteurs DIYables (18 capteurs/écrans) |
À propos de l'écran OLED SSD1309 2,42 pouces
Le SSD1309 est un CI pilote OLED CMOS monopuce pour les panneaux à matrice de points 128×64. Il est compatible en registres avec le SSD1306, donc de nombreux exemples de code existants se portent avec des changements minimaux. Détails matériels notables :
- Pas de pompe de charge intégrée — le SSD1309 nécessite un rail VCC externe, bien que pratiquement toutes les cartes breakout (y compris les modules 2,42 pouces) soient livrées avec un convertisseur élévateur intégré, rendant cela transparent pour l'utilisateur.
- Tolérance de tension plus élevée — le SSD1309 accepte jusqu'à 16V VCC, contre ~4,2V pour le SSD1306.
La communication I2C ne nécessite que deux fils de signal (SDA et SCL), et le bus peut être partagé avec d'autres périphériques I2C en même temps.
Brochage OLED SSD1309 (module I2C)
- Broche GND : Connecter à GND sur Arduino Nano ESP32.
- Broche VCC : Alimentation pour l'affichage. Connecter à 3,3V.
- Broche SCL : Horloge série pour I2C. Connecter à A5.
- Broche SDA : Données série pour I2C. Connecter à A4.

※ Note:
- La disposition des broches du module OLED peut différer selon le fabricant. Utilisez toujours les étiquettes imprimées sur le module lui-même.
- Ce tutoriel utilise le SSD1309 I2C OLED de DIYables, qui a été testé et confirmé fonctionnel.
Schéma de câblage
- Schéma de câblage entre Arduino Nano ESP32 et l'OLED SSD1309 128x64

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Le tableau de câblage entre Arduino Nano ESP32 et l'écran OLED SSD1309 :
| Module OLED | Arduino Nano ESP32 |
|---|---|
| VCC | 3.3V |
| GND | GND |
| SDA | A4 |
| SCL | A5 |
Comment programmer Arduino Nano ESP32 pour l'OLED SSD1309
Installer la bibliothèque DIYables_OLED_SSD1309
- Cliquez sur l'icône Bibliothèques dans la barre gauche de l'Arduino IDE.
- Recherchez DIYables_OLED_SSD1309, puis trouvez la bibliothèque DIYables OLED SSD1309 par DIYables.
- Cliquez sur Installer pour installer la bibliothèque DIYables_OLED_SSD1309.

- Il vous sera demandé d'installer les dépendances de la bibliothèque.
- Cliquez sur Tout installer pour installer toutes les dépendances requises.

Étapes de programmation
- Inclure les bibliothèques requises
- Définir les dimensions de l'écran
- Déclarer l'objet d'affichage
- Initialiser l'OLED dans setup()
- Afficher du contenu
Code Arduino Nano ESP32 — Hello World sur l'OLED SSD1309
Le point de départ le plus simple : afficher quelques lignes de texte à différentes tailles.
Code Arduino Nano ESP32 — Afficher du texte sur l'OLED SSD1309
L'exemple suivant démontre plus de fonctionnalités texte — tailles multiples, formatage des chiffres et la macro F() pour économiser la RAM.
Référence des fonctions d'affichage utiles
- oled.clearDisplay() — effacer le tampon de trame (tous les pixels éteints).
- oled.display() — transférer le tampon vers l'OLED pour que les changements deviennent visibles.
- oled.drawPixel(x, y, color) — activer ou désactiver un pixel individuel.
- oled.setTextSize(n) — mettre à l'échelle la police par le facteur *n* (1 = 6×8, 2 = 12×16, …).
- oled.setCursor(x, y) — déplacer le curseur de texte aux coordonnées pixel *(x, y)*.
- oled.setTextColor(SSD1309_PIXEL_ON) — premier plan du texte uniquement (fond transparent).
- oled.setTextColor(SSD1309_PIXEL_OFF, SSD1309_PIXEL_ON) — texte avec couleur de fond 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éfilement matériel vers la droite entre la page *start* et *stop*.
- oled.startscrollleft(start, stop) — défilement matériel vers la gauche.
- oled.startscrolldiagright(start, stop) — défilement matériel diagonal vers la droite.
- oled.startscrolldiagleft(start, stop) — défilement matériel diagonal 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) — atténuer ou restaurer rapidement l'affichage.
- oled.invertDisplay(true/false) — inversion des couleurs au niveau matériel.
Comment centrer le texte verticalement et horizontalement sur l'OLED SSD1309
Code Arduino Nano ESP32 — Dessiner des formes sur l'OLED SSD1309
La bibliothèque DIYables_OLED_SSD1309 étend Adafruit_GFX, vous donnant un ensemble complet de primitives de dessin de formes : pixels, lignes, rectangles, rectangles remplis, cercles, cercles remplis, triangles, triangles remplis et rectangles arrondis.
Code Arduino Nano ESP32 — Défilement matériel sur l'OLED SSD1309
Le SSD1309 inclut un moteur de défilement matériel qui déplace le contenu de l'affichage sans charge CPU. Quatre directions de défilement sont disponibles : droite, gauche, diagonal-droite et diagonal-gauche. Chaque fonction prend des numéros de page de début et de fin (les pages sont des bandes de 8 pixels de hauteur numérotées de 0 à 7).
※ Note:
Appelez display() pour pousser votre contenu vers l'OLED avant de démarrer un défilement. Arrêtez le défilement avec stopscroll() avant de dessiner un nouveau contenu.
Code Arduino Nano ESP32 — Afficher une image bitmap sur l'OLED SSD1309
Pour afficher un bitmap, vous devez d'abord convertir votre image en un tableau d'octets C. Utilisez l'outil en ligne gratuit image2cpp :
- Téléchargez votre image (PNG, JPG, BMP, etc.).
- Définissez la taille du canevas à 128×64 (ou plus petit).
- Choisissez code Arduino comme format de sortie.
- Copiez le tableau généré dans votre sketch.

※ Note:
- Les dimensions du bitmap ne doivent pas dépasser 128×64 pour ce module.
Code Arduino Nano ESP32 — Contraste et atténuation sur l'OLED SSD1309
Le SSD1309 prend en charge 256 niveaux de contraste (0–255). Utilisez setContrast() pour un contrôle fin et dim() pour basculer rapidement entre la luminosité minimale et le niveau précédemment configuré.
Code Arduino Nano ESP32 — Polices externes personnalisées sur l'OLED SSD1309
La bibliothèque Adafruit GFX inclut des dizaines de polices FreeFont évolutives (Serif, Sans, Mono — Regular, Bold, Italic, quatre tailles chacune). Activez-en n'importe laquelle 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, pas au coin supérieur gauche.
- Les polices externes sont stockées dans le flash (PROGMEM). Utilisez-les judicieusement pour rester dans le budget flash de l'Arduino Nano ESP32.
Dépannage de l'OLED SSD1309 avec Arduino Nano ESP32
Si rien n'apparaît sur l'OLED SSD1309 2,42 pouces après avoir téléversé votre sketch, effectuez ces vérifications :
- Vérifier le câblage — confirmez que SDA→A4, SCL→A5, VCC→3,3V et GND→GND sont tous correctement connectés.
- Confirmer la puce pilote — cette bibliothèque cible le SSD1309. Les modules avec un contrôleur différent (par exemple SH1106) ne répondront pas correctement.
- Vérifier l'adresse I2C — la plupart des modules SSD1309 utilisent par défaut 0x3C, mais certains utilisent 0x3D. Utilisez le sketch scanner I2C ci-dessous pour trouver 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 de trame. Les fonctions de dessin modifient uniquement la RAM ; rien n'apparaît à l'écran jusqu'à ce que vous appeliez oled.display().
- Vérifier l'alimentation — le module 2,42 pouces consomme plus de courant que les OLED plus petits. Confirmez que 3,3V peut fournir suffisamment de courant (typiquement 20–40 mA à pleine luminosité).