Arduino UNO Q - LCD I2C
Ce tutoriel vous montre comment utiliser un écran LCD I2C 16x2 avec Arduino UNO Q — du texte de base aux caractères personnalisés, au défilement et au contrôle à distance via Telegram.
- Comment connecter un LCD I2C à Arduino UNO Q
- Comment afficher le texte "Hello World" sur les deux rangées
- Comment afficher du texte, des entiers, des flottants et des nombres hexadécimaux sur le LCD
- Comment créer et afficher des caractères personnalisés sur le LCD
- Comment faire défiler du texte sur l'écran LCD
- Comment contrôler le rétroéclairage du LCD
- Comment utiliser les modes curseur et clignotement
- Comment contrôler le LCD à distance depuis Linux via la programmation Bridge
- Comment contrôler le LCD à 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) |
Note d'achat: Une autre option consiste à créer l'écran LCD I2C en associant LCD 1602 Display et PCF8574 I2C Adapter Module.
À propos du LCD I2C 16x2
Le LCD I2C combine un panneau LCD standard 16x2 avec un module adaptateur I2C. L'interface I2C réduit le câblage à seulement 4 fils — bien plus simple qu'une connexion LCD parallèle.
Brochage du LCD
Le LCD I2C possède quatre broches :
- GND — connecter à GND
- VCC — connecter à 5V
- SDA — signal de données I2C
- SCL — signal d'horloge I2C

Coordonnées du LCD
Le LCD I2C 16x2 possède 16 colonnes et 2 rangées, avec colonnes et rangées numérotées à partir de 0.

Schéma de Câblage

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
| Broche LCD I2C | Broche Arduino UNO Q |
|---|---|
| GND | GND |
| VCC | 5V |
| SDA | SDA |
| SCL | SCL |
※ Note:
L'adresse I2C du LCD peut varier selon le fabricant. Dans ce tutoriel, nous utilisons 0x27, qui est la valeur par défaut pour les modules DIYables.
Comment Programmer le LCD I2C
La bibliothèque DIYables_LCD_I2C facilite le contrôle du LCD.
- Inclure la bibliothèque :
- Créer un objet LCD avec l'adresse I2C, le nombre de colonnes et de rangées :
- Initialiser le LCD dans setup() :
- Déplacer le curseur à une position (colonne, rangée) :
- Afficher du texte à la position actuelle du curseur :
Consultez la section "Aller plus loin avec le LCD" pour le défilement, les caractères personnalisés et plus encore.
※ Note:
L'adresse I2C peut varier selon le fabricant. Nous utilisons 0x27 tel que spécifié par DIYables.
Code Arduino UNO Q — Hello World sur LCD I2C
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 travaillent ensemble.
Le sketch ci-dessous affiche du texte sur les deux rangées du LCD.
Étapes Rapides
- Première fois avec 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 le LCD : Connectez VCC→5V, GND→GND, SDA→SDA, SCL→SCL.
- 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 Create New App.

- Donnez un nom à l'application, par exemple : DIYables_LCD_I2C
- Cliquez sur Create 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 là 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 LCD I2C created by DIYables.io and click the Install button.
- Téléverser : Cliquez sur le bouton Run dans Arduino App Lab pour compiler et téléverser vers le STM32.

Regardez le LCD — la rangée 0 affiche "Hello, World!" et la rangée 1 affiche "Arduino UNO Q" !
※ Note:
Si le LCD n'affiche rien ou seulement des carrés noirs, ajustez le potentiomètre de contraste au dos du module I2C à l'aide d'un petit tournevis. Consultez Dépannage sur LCD I2C pour plus d'aide.
Code Arduino UNO Q — Afficher du Texte et des Nombres sur LCD I2C
Cet exemple montre comment afficher une chaîne de texte brut, un entier, un flottant et un nombre hexadécimal sur le LCD.
Étapes Rapides
- Copiez le code ci-dessus et collez-le dans sketch/sketch.ino.
- Cliquez sur le bouton Run dans Arduino App Lab.

Le LCD affiche d'abord du texte et un entier, puis après 3 secondes efface et affiche un flottant et un nombre hexadécimal.
Référence des Fonctions LCD Utiles
Référence rapide pour les fonctions DIYables_LCD_I2C couramment utilisées :
- lcd.init() — initialiser le LCD
- lcd.backlight() — allumer le rétroéclairage
- lcd.noBacklight() — éteindre le rétroéclairage
- lcd.setCursor(col, row) — déplacer le curseur à la colonne *col*, rangée *row* (les deux basés sur 0)
- lcd.print("text") — afficher une chaîne à la position actuelle du curseur
- lcd.print(number) — afficher un entier
- lcd.print(number, HEX) — afficher un entier en hexadécimal
- lcd.print(floatVal, decimals) — afficher un flottant avec le nombre de décimales spécifié
- lcd.clear() — effacer l'affichage et déplacer le curseur en (0, 0)
- lcd.home() — déplacer le curseur en (0, 0) sans effacer
- lcd.createChar(id, array) — enregistrer un caractère personnalisé (id 0 à 7)
- lcd.write((byte)id) — afficher un caractère personnalisé enregistré
- lcd.scrollDisplayLeft() — décaler tout le contenu d'une colonne vers la gauche
- lcd.scrollDisplayRight() — décaler tout le contenu d'une colonne vers la droite
- lcd.cursor() — afficher le curseur souligné
- lcd.noCursor() — masquer le curseur
- lcd.blink() — afficher le curseur bloc clignotant
- lcd.noBlink() — arrêter le curseur bloc clignotant
Code Arduino UNO Q — Caractères Personnalisés sur LCD I2C
lcd.print() fonctionne uniquement avec les caractères ASCII. Pour afficher un symbole spécial (par exemple, cœur, flèche), définissez un caractère personnalisé en utilisant 8 octets de données de pixels. Une cellule de caractère LCD 16x2 est de 8 lignes × 5 colonnes de pixels — vous pouvez stocker jusqu'à 8 caractères personnalisés (IDs 0 à 7).
Utilisez le générateur de caractères ci-dessous pour concevoir votre caractère et obtenir le code binaire :
Étapes Rapides
- Copiez le code ci-dessus et collez-le dans sketch/sketch.ino.
- Cliquez sur le bouton Run dans Arduino App Lab.

Le LCD affiche quatre symboles personnalisés : cœur, souriant, note de musique et flèche — deux par rangée.
※ Note:
Pour concevoir vos propres caractères, utilisez le Générateur de Caractères Personnalisés LCD — il vous permet de dessiner le motif de pixels et génère le tableau d'octets prêt à utiliser dans votre code. Vous pouvez également utiliser le générateur interactif ci-dessus.
Code Arduino UNO Q — Défilement de Texte sur LCD I2C
scrollDisplayLeft() et scrollDisplayRight() décalent tout le contenu de l'affichage d'une colonne par appel — les deux rangées se déplacent ensemble. Utilisez une boucle avec un court délai pour créer un effet de défilement fluide.
Étapes Rapides
- Copiez le code ci-dessus et collez-le dans sketch/sketch.ino.
- Cliquez sur le bouton Run dans Arduino App Lab.

Le contenu du LCD glisse vers la gauche de 16 pas, fait une pause, puis glisse vers la droite de 16 pas pour revenir à la position d'origine.
Code Arduino UNO Q — Contrôle du Rétroéclairage sur LCD I2C
Utilisez lcd.backlight() pour allumer la LED de rétroéclairage de l'adaptateur I2C et lcd.noBacklight() pour l'éteindre. Cette démo fait défiler le cycle : allumé → éteint → allumé → motif de clignotement.
Étapes Rapides
- Copiez le code ci-dessus et collez-le dans sketch/sketch.ino.
- Cliquez sur le bouton Run dans Arduino App Lab.

Observez le rétroéclairage du LCD s'allumer, puis s'éteindre, puis se rallumer, et finalement clignoter cinq fois.
Code Arduino UNO Q — Curseur et Clignotement sur LCD I2C
Le LCD supporte deux styles de curseur : un curseur souligné (lcd.cursor()) et un curseur bloc clignotant (lcd.blink()). Ils peuvent être affichés individuellement ou ensemble.
Étapes Rapides
- Copiez le code ci-dessus et collez-le dans sketch/sketch.ino.
- Cliquez sur le bouton Run dans Arduino App Lab.

Le LCD fait défiler le cycle : curseur souligné visible → masqué → curseur bloc clignotant → arrêté → curseur et clignotement ensemble → les deux éteints.
Dépannage sur LCD I2C
- LCD n'affiche rien / rétroéclairage éteint — Vérifiez VCC→5V et GND. Assurez-vous que l'appel lcd.backlight() est dans setup().
- LCD affiche des carrés noirs sur les deux rangées — Le contraste est trop élevé. Tournez le potentiomètre sur l'adaptateur I2C pour réduire le contraste.
- LCD affiche un texte faible/invisible — Le contraste est trop faible. Augmentez-le via le potentiomètre.
- Caractères incorrects affichés — L'adresse I2C peut être incorrecte. Essayez 0x3F si 0x27 ne fonctionne pas, ou exécutez un sketch de scanner I2C pour trouver l'adresse.
- Le sketch est téléversé mais le LCD reste vide — Vérifiez que les connexions SDA et SCL ne sont pas inversées.
Programmation Bridge Linux + MCU
L'Arduino UNO Q possède deux processeurs qui travaillent 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.
- Le LCD est connecté au MCU (STM32) — via le bus I2C (SDA/SCL). Seul le MCU peut piloter directement le LCD.
- Le MPU ne peut pas contrôler le LCD directement — il appelle des fonctions MCU via Bridge.call("set_line1", "text") qui met à jour le LCD et retourne le résultat.
- Le MPU dispose du Wi-Fi — comme le MPU exécute Debian Linux complet avec Wi-Fi, il peut recevoir des commandes Telegram et afficher n'importe quel message sur le LCD à distance.
- Communication : Bridge.call() du côté Linux invoque les fonctions Bridge.provide_safe() du côté MCU (car les écritures LCD sont des appels d'API matérielle).
- ⚠️ Réservé : /dev/ttyHS1 (Linux) et Serial1 (MCU) sont utilisés par le routeur Arduino — ne les ouvrez jamais directement.
En résumé : Le MPU envoie du texte via Telegram → le MPU appelle Bridge → le MCU met à jour le LCD → le MCU renvoie le résultat au MPU.
Sketch MCU — LCD I2C avec Bridge et sortie Moniteur :
Script Python (Arduino App Lab) — afficher du texte sur le LCD depuis Linux :
- Remarque : Assurez-vous que Bridge.begin() est appelé dans le sketch MCU et que le sketch est téléversé avant d'exécuter le script Python.
- ⚠️ Avertissement : N'ouvrez jamais directement /dev/ttyHS1 (sur Linux) ou n'utilisez jamais Serial1 (sur le MCU) — ces ports sont réservés par le routeur Arduino.
Étapes Rapides
- Créer une nouvelle application : Ouvrez Arduino App Lab, cliquez sur Create New App, nommez-la DIYables_LCD_I2C_Bridge, et cliquez sur Create.
- 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 Run — le côté Python met à jour le LCD toutes les quelques secondes.
Sortie de la Console App Lab
Intégration Telegram
Envoyez n'importe quel message sur votre LCD depuis n'importe où dans le monde 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 contrôler le LCD :
- Remarque : Remplacez YOUR_BOT_TOKEN par le token obtenu depuis @BotFather sur Telegram.
- Envoyez /display Hello World — le texte apparaît sur le LCD.
- Envoyez /clear — l'écran LCD est effacé.
- Envoyez /status — le bot répond avec le contenu actuel du LCD.
Étapes Rapides
- Téléverser le sketch MCU : Utilisez le sketch MCU Bridge de la section précédente (téléversez-le d'abord si ce n'est pas déjà fait).
- Coller le script Telegram : Copiez le code Python ci-dessus dans l'onglet Python de votre application dans Arduino App Lab.
- Définir votre token : Remplacez YOUR_BOT_TOKEN dans le script par votre vrai token de bot.
- Exécuter l'application : Cliquez sur Run — le bot commence à écouter les commandes Telegram.
- Tester : Envoyez /display Arduino UNO Q — le LCD devrait afficher le texte. Envoyez /clear pour l'effacer.
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'Application/Projets
- Tableau d'affichage IoT : Utilisez Telegram pour pousser des annonces vers un LCD sur un mur — aucun ordinateur à proximité n'est nécessaire
- Tableau de bord capteurs : Afficher la température, l'humidité ou d'autres valeurs de capteurs du côté MPU en temps réel
- Affichage d'alarme de porte : Lorsqu'un capteur de mouvement se déclenche, afficher "MOUVEMENT DÉTECTÉ" sur le LCD et envoyer une alerte Telegram
- Station météo Wi-Fi : Récupérer les données météo depuis une API sur le MPU et faire défiler les prévisions sur le LCD
- Minuterie à rebours : Envoyer /timer 60 via Telegram et le LCD compte à rebours les secondes en utilisant la boucle MCU
Défiez-vous
- Facile : Modifier le bot Telegram pour prendre en charge les commandes /line1 <text> et /line2 <text> pour définir chaque rangée LCD indépendamment
- Moyen : Ajouter une commande /scroll <text> qui fait défiler le texte long sur le LCD (utiliser lcd.scrollDisplayLeft() dans une boucle)
- Avancé : Afficher des données de capteurs en direct (température depuis un DHT22) sur le LCD tout en maintenant les commandes Telegram réactives grâce à un minuteur de mise à jour non bloquant