Arduino UNO Q - Écran OLED SSD1309 (2,42 pouces)
Ce tutoriel vous montre comment utiliser un écran OLED SSD1309 128x64 de 2,42 pouces avec l'Arduino UNO Q — depuis le texte et les graphiques de base jusqu'à la commande à distance via Telegram.
- Comment connecter un écran OLED SSD1309 128x64 à l'Arduino UNO Q
- Comment afficher du texte et des nombres en utilisant la bibliothèque DIYables_OLED_SSD1309
- Comment dessiner des formes (lignes, rectangles, cercles, triangles) sur l'OLED
- Comment utiliser le défilement matériel dans plusieurs directions
- Comment afficher des images bitmap sur l'OLED
- Comment contrôler la luminosité et le contraste
- Comment utiliser des polices externes personnalisées
- Comment contrôler l'OLED à distance depuis Telegram via la programmation Bridge

Matériel Requis
Ou vous pouvez acheter les kits suivants:
| 1 | × | Kit de Capteurs DIYables (18 capteurs/écrans) |
À Propos de l'Écran OLED SSD1309 de 2,42 Pouces
Le SSD1309 est un circuit pilote OLED 128×64 couramment trouvé sur les modules OLED I2C de 2,42 pouces (parfois étiquetés 2,4 pouces). Il est compatible en registres avec le SSD1306, mais utilise un rail VCC externe (géré de manière transparente par le convertisseur boost embarqué de la carte breakout). Caractéristiques principales :
- Résolution : 128 × 64 pixels
- Interface : I2C (seulement 4 fils nécessaires)
- Couleur d'affichage : Blanc, bleu ou jaune selon le matériau OLED — non contrôlable par logiciel
- Angle de vision : Large, pixels auto-émissifs — noirs profonds, pas de rétroéclairage nécessaire
- Bibliothèque : Utilise DIYables_OLED_SSD1309 (étend Adafruit GFX)
Brochage du SSD1309 OLED
- GND — connecter à GND
- VCC — connecter à 5V
- SCL — signal d'horloge I2C
- SDA — signal de données I2C

※ Note:
L'ordre des broches peut différer selon les fabricants. Utilisez toujours les étiquettes imprimées sur le module OLED.
Schéma de Câblage

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
| Broche OLED | Broche Arduino UNO Q |
|---|---|
| GND | GND |
| VCC | 5V |
| SCL | SCL |
| SDA | SDA |
Comment Programmer le SSD1309 OLED
- Inclure les bibliothèques :
- Créer l'objet d'affichage :
- Initialiser dans setup() :
- Afficher du texte :
※ Note:
Appelez toujours display.display() après les commandes de dessin pour envoyer le tampon vers l'écran physique.
Code Arduino UNO Q — Hello World sur l'OLED SSD1309
L'Arduino UNO Q possède deux processeurs : le MCU STM32 (gère le contrôle matériel en temps réel) et le MPU Qualcomm (exécute Debian Linux). Dans cette section, seul le MCU STM32 est programmé — le côté Linux reste inactif. Une section ultérieure montrera comment les deux processeurs fonctionnent ensemble.
Le sketch ci-dessous affiche du texte en deux tailles différentes sur l'OLED.
Étapes Rapides
- Première utilisation d'Arduino UNO Q ? Suivez le tutoriel Démarrer avec Arduino UNO Q pour préparer votre environnement de développement avant de continuer.
- Câbler l'OLED : Connectez GND→GND, VCC→5V, SCL→SCL, SDA→SDA.
- Connecter : Branchez l'Arduino UNO Q à votre ordinateur avec un câble USB-C.
- Ouvrir Arduino App Lab : Lancez Arduino App Lab et attendez qu'il détecte votre Arduino UNO Q.
- Créer une nouvelle application : Cliquez sur le bouton Créer une nouvelle application.

- Donnez un nom à l'application, par exemple : DIYables_SSD1309
- Cliquez sur Créer pour confirmer.
- Vous verrez un ensemble de dossiers et fichiers générés dans votre nouvelle application.

- Trouvez le fichier sketch/sketch.ino — c'est ici que vous collerez le sketch MCU.
- Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.

- Search for Arduino_RouterBridge created by Arduino and click the Install button.
- Search for DIYables_OLED_SSD1309 created by DIYables and click the Install button.
- Téléverser : Cliquez sur le bouton Exécuter dans Arduino App Lab pour compiler et téléverser vers le STM32.

Regardez l'OLED — il affiche "Hello, World!", "DIYables" et "SSD1309 OLED 128x64" !
Code Arduino UNO Q — Afficher du Texte sur l'OLED SSD1309
Cet exemple montre différentes tailles de texte et comment afficher des entiers, des flottants et des nombres hexadécimaux sur l'OLED.
Étapes Rapides
- Copiez le code ci-dessus et collez-le dans sketch/sketch.ino.
- Cliquez sur le bouton Exécuter dans Arduino App Lab.

L'OLED affiche successivement des démos de taille de texte, puis un entier, un flottant et un nombre hexadécimal.
Référence des Fonctions d'Affichage Utiles
Référence rapide des fonctions SSD1309 OLED couramment utilisées :
- display.clearDisplay() — efface le tampon d'image (tous les pixels éteints)
- display.display() — envoie le tampon vers l'écran — requis après chaque appel de dessin
- display.drawPixel(x, y, color) — définit ou efface un pixel unique
- display.setTextSize(n) — met à l'échelle la police par le facteur *n* (1 = 6×8 px, 2 = 12×16 px, …)
- display.setCursor(x, y) — déplace le curseur de texte aux coordonnées pixel *(x, y)*
- display.setTextColor(SSD1309_PIXEL_ON) — premier plan du texte uniquement (arrière-plan transparent)
- display.setTextColor(SSD1309_PIXEL_OFF, SSD1309_PIXEL_ON) — texte avec arrière-plan explicite
- display.println("message") — imprime une chaîne et passe à la ligne suivante
- display.println(number) — imprime un entier en décimal
- display.println(number, HEX) — imprime un entier en hexadécimal
- display.startscrollright(start, stop) — défilement matériel vers la droite entre les pages
- display.startscrollleft(start, stop) — défilement matériel vers la gauche
- display.startscrolldiagright(start, stop) — défilement diagonal vers la droite
- display.startscrolldiagleft(start, stop) — défilement diagonal vers la gauche
- display.stopscroll() — arrête tout défilement matériel actif
- display.setContrast(value) — ajuste la luminosité (0–255)
- display.dim(true/false) — basculement rapide d'atténuation
- display.invertDisplay(true/false) — inversion des couleurs au niveau matériel
Code Arduino UNO Q — Dessiner des Formes sur l'OLED SSD1309
La bibliothèque DIYables_OLED_SSD1309 hérite d'Adafruit_GFX, vous donnant accès aux pixels, lignes, rectangles, rectangles remplis, cercles, cercles remplis, triangles, triangles remplis et rectangles arrondis. Le sketch ci-dessous parcourt tous ces éléments.
Étapes Rapides
- Copiez le code ci-dessus et collez-le dans sketch/sketch.ino.
- Cliquez sur le bouton Exécuter dans Arduino App Lab.

Regardez l'OLED parcourir toutes les formes — pixels, lignes, rectangles, cercles, rectangles arrondis et triangles !
Code Arduino UNO Q — Défilement Matériel sur l'OLED SSD1309
Le SSD1309 dispose d'un moteur de défilement matériel intégré qui déplace le contenu sans travail du CPU. La bibliothèque offre quatre directions de défilement : droite, gauche, diagonal-droite et diagonal-gauche.
※ Note:
Appelez toujours display.display() pour transférer votre contenu vers l'OLED avant de démarrer un défilement. Appelez stopscroll() avant de dessiner un nouveau contenu.
Étapes Rapides
- Copiez le code ci-dessus et collez-le dans sketch/sketch.ino.
- Cliquez sur le bouton Exécuter dans Arduino App Lab.

L'OLED fait défiler "DIYables" vers la droite, la gauche, diagonal-droite et diagonal-gauche, en répétant indéfiniment.
Code Arduino UNO Q — Afficher une Image Bitmap sur l'OLED SSD1309
Pour afficher un bitmap sur l'OLED SSD1309, vous devez d'abord convertir votre image en tableau d'octets C. Utilisez l'outil gratuit Convertisseur Image vers Bitmap :
- Téléchargez votre fichier image (PNG, JPG, BMP, etc.).
- Définissez la taille du canevas à 128×64 (ou moins).
- Sélectionnez Code Arduino comme format de sortie.
- Copiez le tableau généré dans votre sketch.

Le sketch ci-dessous montre une icône cœur 16×16 puis passe au logo DIYables complet 128×64 — tous deux stockés sous forme de tableaux d'octets dans le code :
Étapes Rapides
- Copiez le code ci-dessus et collez-le dans sketch/sketch.ino.
- Cliquez sur le bouton Exécuter dans Arduino App Lab.

L'OLED affiche l'icône cœur pendant 3 secondes, puis passe au logo DIYables.
※ Note:
Les dimensions du bitmap ne doivent pas dépasser la résolution de l'écran (128×64).
Code Arduino UNO Q — 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 précis et dim() pour un basculement rapide de la luminosité.
Étapes Rapides
- Copiez le code ci-dessus et collez-le dans sketch/sketch.ino.
- Cliquez sur le bouton Exécuter dans Arduino App Lab.

Regardez la luminosité de l'OLED augmenter puis diminuer, suivie d'un cycle atténuation-activée/atténuation-désactivée.
Code Arduino UNO Q — Polices Externes Personnalisées sur l'OLED SSD1309
La bibliothèque Adafruit GFX inclut de nombreuses polices FreeFont (Serif, Sans, Mono — en plusieurs tailles). Utilisez-les en incluant l'en-tête de police 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.
Étapes Rapides
- Copiez le code ci-dessus et collez-le dans sketch/sketch.ino.
- Cliquez sur le bouton Exécuter dans Arduino App Lab.

L'OLED parcourt la police intégrée, FreeSerif 9pt, FreeSansBold 12pt et FreeMono 9pt.
Programmation Bridge Linux + MCU
L'Arduino UNO Q possède deux processeurs qui fonctionnent ensemble : le MPU (Qualcomm, exécute Debian Linux) et le MCU (STM32, exécute Zephyr OS avec votre sketch Arduino). Ils communiquent via RPC grâce à la bibliothèque Arduino_RouterBridge — jamais via des ports série bruts.
- L'OLED SSD1309 est connecté au MCU (STM32) — via I2C (SCL/SDA). Seul le MCU peut le piloter directement.
- Le MPU ne peut pas contrôler l'OLED directement — il appelle Bridge.call("display_text", "text") qui met à jour l'affichage et imprime le résultat dans le Monitor.
- Le MPU dispose du Wi-Fi — parce que le MPU exécute Debian Linux complet avec Wi-Fi, il peut recevoir des commandes Telegram et afficher n'importe quel message sur l'OLED à distance.
- Communication : Bridge.call() côté Linux invoque les fonctions Bridge.provide_safe() côté MCU (car les écritures OLED sont des appels API matériels).
- ⚠️ Réservé : /dev/ttyHS1 (Linux) et Serial1 (MCU) sont utilisés par le routeur Arduino — ne les ouvrez jamais directement.
Sketch MCU — OLED SSD1309 avec Bridge et sortie Monitor :
Script Python (Arduino App Lab) — afficher du texte sur l'OLED SSD1309 depuis Linux :
Étapes Rapides
- Créer une nouvelle application : Ouvrez Arduino App Lab, cliquez sur Créer une nouvelle application, nommez-la DIYables_SSD1309_Bridge, et cliquez sur Créer.
- Coller le sketch MCU : Copiez le code MCU Bridge ci-dessus et collez-le dans sketch/sketch.ino.
- Coller le script Python : Copiez le code Python ci-dessus et collez-le dans le fichier Python de l'application.
- Exécuter l'application : Cliquez sur le bouton Exécuter — le côté Python fait défiler les messages sur l'OLED.
Sortie de la Console App Lab
Intégration Telegram
Affichez n'importe quel texte sur votre OLED SSD1309 depuis n'importe où via Telegram.
Si vous n'avez pas encore de bot Telegram, consultez Arduino UNO Q - Bot Telegram pour obtenir votre token de bot avant de continuer.
Sketch MCU : Conservez le même sketch MCU de la section Bridge précédente — aucune modification nécessaire. Assurez-vous qu'il est déjà téléversé et en cours d'exécution sur le STM32 avant de continuer.
Script Python (Arduino App Lab) — bot Telegram pour l'OLED SSD1309 :
- Note : Remplacez YOUR_BOT_TOKEN par le token de @BotFather sur Telegram.
- Envoyez /display Hello — apparaît sur l'OLED.
- Envoyez /clear — efface l'OLED.
- Envoyez /status — le bot répond avec le texte actuel.
Sortie de la Console App Lab
ArduinoBot
Intégration d'OpenClaw
Vous pouvez adapter OpenClaw à ce tutoriel en vous référant aux instructions du tutoriel Arduino UNO Q - OpenClaw.
Idées d'Applications/Projets
- Affichage d'alerte en grand texte : Utilisez la taille de texte 3 ou 4 pour afficher une seule valeur critique (température, tension) sur tout l'écran de 2,42 pouces
- Tableau d'informations distant : Envoyez des messages depuis un groupe Telegram à afficher sur l'OLED pour des annonces d'équipe
- État de l'enregistreur de données : Affichez le dernier horodatage d'enregistrement et le nombre de lignes sur l'OLED lorsque le MPU écrit dans un fichier CSV
- Indicateur de signal Wi-Fi : Affichez le SSID Wi-Fi du MPU et la puissance du signal RSSI sur le grand écran de 2,42 pouces
- Rendu d'icône personnalisée : Utilisez drawBitmap() pour afficher des logos ou des icônes d'avertissement stockés sous forme de tableaux d'octets dans le sketch MCU
Défiez-Vous
- Facile : Modifiez le sketch pour utiliser setTextSize(2) pour la première ligne et setTextSize(1) pour les lignes suivantes afin de créer une mise en page titre/corps
- Moyen : Ajoutez une commande Telegram /contrast <0-255> qui appelle display.ssd1309_command(SSD1309_SETCONTRAST) suivi de la valeur pour ajuster la luminosité de l'écran
- Avancé : Affichez un graphique à barres en temps réel sur l'OLED en utilisant fillRect() qui se met à jour à partir des données de capteur envoyées depuis le MPU via Bridge