Arduino UNO Q - Clavier et LCD

Vous souhaitez taper sur un clavier et voir les caractères s'afficher sur un écran LCD avec votre Arduino UNO Q ? Dans ce tutoriel, vous apprendrez exactement cela — et aussi comment surveiller et effacer l'affichage à distance via Telegram.

Dans ce tutoriel, vous apprendrez :

Arduino UNO Q Clavier LCD

Matériel Requis

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×LCD I2C 16x2
1×Alternativement: LCD I2C 20x4
1×Clavier 3x4
1×Plaque d'essai
1×Fils de connexion
1×Recommandé: Shield à bornier à vis pour Arduino Uno
1×Recommandé: Sensors/Servo Expansion Shield for Arduino Uno
1×Recommandé: Shield plaque d'essai pour Arduino Uno
1×Recommandé: Boîtier pour Arduino Uno
1×Recommandé: Kit plaque de base prototypage et plaque d'essai pour Arduino Uno

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

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 Clavier et du LCD

Si vous êtes nouveau avec le clavier 3x4 ou l'écran LCD I2C, consultez d'abord ces tutoriels :

Schéma de Câblage

Schéma de Câblage Arduino UNO Q Clavier LCD

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Connexions du Clavier 3x4 :

Broche du Clavier MCU Arduino UNO Q
R1 (Rangée 1) D9
R2 (Rangée 2) D8
R3 (Rangée 3) D7
R4 (Rangée 4) D6
C1 (Col 1) D5
C2 (Col 2) D4
C3 (Col 3) D3

Connexions du LCD I2C :

Broche LCD I2C MCU Arduino UNO Q
VCC 5V
GND GND
SDA A4
SCL A5

Code Arduino UNO Q

L'Arduino UNO Q dispose de deux processeurs travaillant ensemble :

  • Le MCU STM32 lit le clavier et pilote le LCD directement — toute la logique d'affichage et de saisie s'exécute sur le MCU
  • Le MPU Qualcomm exécute Debian Linux et gère le Wi-Fi, Python et la connectivité cloud
  • Dans cette section, seul le MCU est programmé — le côté Linux reste inactif. Une section ultérieure montre comment les deux processeurs travaillent ensemble via Bridge.

Appuyer sur une touche l'affiche sur le LCD. Appuyer sur * efface l'écran.

/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino-uno-q/arduino-uno-q-keypad-lcd */ #include <DIYables_Keypad.h> #include <DIYables_LCD_I2C.h> const int ROW_NUM = 4; const int COLUMN_NUM = 3; char keys[ROW_NUM][COLUMN_NUM] = { { '1', '2', '3' }, { '4', '5', '6' }, { '7', '8', '9' }, { '*', '0', '#' } }; byte pin_rows[ROW_NUM] = { 9, 8, 7, 6 }; byte pin_column[COLUMN_NUM] = { 5, 4, 3 }; DIYables_Keypad keypad = DIYables_Keypad(makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM); DIYables_LCD_I2C lcd(0x27, 16, 2); int cursorColumn = 0; void setup() { Serial.begin(115200); delay(1500); lcd.init(); lcd.backlight(); lcd.print("Keypad LCD Ready"); Serial.println("Arduino UNO Q Keypad + LCD ready"); } void loop() { char key = keypad.getKey(); if (key) { Serial.print("Key pressed: "); Serial.println(key); if (key == '*') { // Clear LCD lcd.clear(); cursorColumn = 0; } else { lcd.setCursor(cursorColumn, 0); lcd.print(key); cursorColumn++; if (cursorColumn == 16) { lcd.clear(); cursorColumn = 0; } } } }

É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.

  • Connecter : Câblez le clavier 3x4 et le LCD I2C au MCU Arduino UNO Q comme indiqué dans le schéma de câblage ci-dessus.
  • 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.
Créer une nouvelle application dans Arduino App Lab sur Arduino UNO Q
  • Donnez un nom à l'application, par exemple : KeypadLcd
  • Cliquez sur Create pour confirmer.
Dossiers et fichiers de l'application Arduino App Lab sur Arduino UNO Q
  • Coller le sketch : Copiez le code MCU ci-dessus et collez-le dans sketch/sketch.ino. Gardez les autres fichiers par défaut.
  • Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.
Add sketch library in Arduino App Lab on Arduino UNO Q
  • Search for DIYables_Keypad created by DIYables.io and click the Install button.
My Apps / DIYables Apps
Run
Bricks
No bricks added...
Sketch Libraries
No sketch libra...
Files
python
sketch
.gitignore
README.md
app.yaml
sketch.ino
Add sketch library
DIYables_Keypad DIYables.io

The library is designed for Arduino, ESP32, ESP8266... to use with keypad such as 3x4, 4x4 keypad. It also works with Arduino Uno R4 WiFi/Minima

1.0.1
Install
More Info
  • Search for DIYables LCD I2C created by DIYables.io and click the Install button.
My Apps / DIYables Apps
Run
Bricks
No bricks added...
Sketch Libraries
No sketch libra...
Files
python
sketch
.gitignore
README.md
app.yaml
sketch.ino
Add sketch library
DIYables LCD I2C DIYables.io

This library is designed for HD44780-based I2C LCD displays. It provides LiquidCrystal-compatible API plus helper functions (text alignment, progress bars, predefined custom characters). Supports multiple I2C buses (Wire, Wire1, Wire2) for advanced boards like Arduino Giga, Due, and ESP32. Compatible with all Arduino-based platforms including Arduino Uno, Mega, Nano, ESP32, ESP8266, STM32, and Raspberry Pi Pico.

1.0.0
Install
More Info
  • Téléverser : Cliquez sur le bouton Run dans Arduino App Lab.
Cliquer sur le bouton Run dans Arduino App Lab sur Arduino UNO Q
  • Appuyez sur les touches du clavier — chaque caractère apparaît sur le LCD. Appuyez sur * pour effacer.

※ Note:

Si le LCD n'affiche rien, consultez Dépannage pour LCD I2C pour obtenir de l'aide.

Bridge : Linux + MCU

Cette section montre comment programmer les deux processeurs de l'Arduino UNO Q afin que le côté Linux puisse surveiller la saisie du clavier et effacer le LCD à distance :

  • Le clavier 3x4 et le LCD sont connectés au MCU (STM32) — le MCU gère toute la détection des touches et le rendu de l'affichage
  • Le MPU ne peut pas accéder directement au clavier ou au LCD — il doit appeler des fonctions Bridge pour lire les entrées et contrôler l'affichage
  • Le MPU dispose du Wi-Fi — exécutant Debian Linux complet, il peut réagir aux saisies confirmées et envoyer des alertes sur Internet
  • Arduino_RouterBridge permet la communication RPC entre les deux processeurs
  • ⚠️ /dev/ttyHS1 (Linux) et Serial1 (MCU) sont RÉSERVÉS par le routeur — ne les ouvrez jamais dans le code utilisateur

En résumé : Le MCU lit la saisie du clavier et l'affiche sur le LCD → le MPU surveille la saisie et les entrées confirmées via Bridge → le MPU peut réagir et notifier depuis n'importe où sur Internet.

Remarque : Dans le sketch Bridge, keypad.getKey() est appelé dans la fonction Arduino loop() pour détecter continuellement les pressions de touches — cela est nécessaire et n'interfère pas avec la communication Bridge.

Code MCU (Bridge)

/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino-uno-q/arduino-uno-q-keypad-lcd */ #include <DIYables_Keypad.h> #include <DIYables_LCD_I2C.h>#include "Arduino_RouterBridge.h" const int ROW_NUM = 4; const int COLUMN_NUM = 3; char keys[ROW_NUM][COLUMN_NUM] = { { '1', '2', '3' }, { '4', '5', '6' }, { '7', '8', '9' }, { '*', '0', '#' } }; byte pin_rows[ROW_NUM] = { 9, 8, 7, 6 }; byte pin_column[COLUMN_NUM] = { 5, 4, 3 }; DIYables_Keypad keypad = DIYables_Keypad(makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM); DIYables_LCD_I2C lcd(0x27, 16, 2); String typed_buffer = ""; int cursorColumn = 0; bool entry_confirmed = false; String get_typed(String arg) { return typed_buffer; } String clear_lcd(String arg) { lcd.clear(); typed_buffer = ""; cursorColumn = 0; entry_confirmed = false; Monitor.println("LCD cleared"); return "OK"; } String get_status(String arg) { if (typed_buffer.length() == 0) return "LCD: empty"; if (entry_confirmed) return "Confirmed: " + typed_buffer; return "Typing: " + typed_buffer; } void setup() { Bridge.begin(); Monitor.begin(); lcd.init(); lcd.backlight(); lcd.print("Ready"); Bridge.provide("get_typed", get_typed); Bridge.provide_safe("clear_lcd", clear_lcd); Bridge.provide("get_status", get_status); Monitor.println("Arduino UNO Q Keypad + LCD Bridge ready"); } void loop() { char key = keypad.getKey(); if (key) { Monitor.println("Key pressed: " + String(key)); if (key == '*') { lcd.clear(); typed_buffer = ""; cursorColumn = 0; entry_confirmed = false; } else if (key == '#') { entry_confirmed = true; Monitor.println("Entry confirmed: " + typed_buffer); } else { lcd.setCursor(cursorColumn, 0); lcd.print(key); typed_buffer += key; cursorColumn++; if (cursorColumn == 16) { lcd.clear(); cursorColumn = 0; } } } }

Code Python (Bridge)

/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino-uno-q/arduino-uno-q-keypad-lcd */ from arduino.app_utils import * import time def loop(): result = Bridge.call("get_status") print(result) if result.startswith("Confirmed:"): print(f"Entry confirmed — clearing in 3 seconds...") time.sleep(3) result = Bridge.call("clear_lcd") print(result) time.sleep(0.5) App.run(user_loop=loop)

Étapes Rapides

  • Connecter : Câblez le clavier 3x4 et le LCD I2C à l'Arduino UNO Q comme indiqué dans le schéma de câblage.
  • Ouvrir Arduino App Lab : Lancez Arduino App Lab et attendez que la carte soit détectée.
  • Créer une nouvelle application : Cliquez sur Create New App, nommez-la KeypadLcdBridge, puis cliquez sur Create.
  • Coller le sketch MCU : Copiez le code MCU Bridge ci-dessus et collez-le dans sketch/sketch.ino.
  • Coller le code Python : Copiez le code Python Bridge ci-dessus et collez-le dans le fichier Python de l'application.
  • Téléverser : Cliquez sur le bouton Run dans Arduino App Lab.
Cliquer sur le bouton Run dans Arduino App Lab sur Arduino UNO Q
  • Tapez sur le clavier et appuyez sur # pour confirmer — observez la réaction de la console Python.

Sortie de la Console App Lab

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
Message (Enter to send a message to "Newbiely" on usb(2820070321))
New Line
9600 baud
[2026-04-29 09:00:01] Arduino UNO Q Keypad + LCD Bridge ready [2026-04-29 09:00:05] Key pressed: 1 [2026-04-29 09:00:06] Key pressed: 2 [2026-04-29 09:00:07] Key pressed: 3 [2026-04-29 09:00:08] Key pressed: # [2026-04-29 09:00:08] Entry confirmed: 123
DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:00:03] LCD: empty [2026-04-29 09:00:05] Typing: 1 [2026-04-29 09:00:06] Typing: 12 [2026-04-29 09:00:07] Typing: 123 [2026-04-29 09:00:08] Confirmed: 123 [2026-04-29 09:00:08] Entry confirmed — clearing in 3 seconds... [2026-04-29 09:00:11] OK

Telegram

Recevez des notifications Telegram lorsqu'une saisie au clavier est confirmée (# pressé) et effacez le LCD à distance depuis votre téléphone.

Sketch MCU : Conservez le même sketch MCU de la section Bridge précédente.

Code Python (Telegram)

/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino-uno-q/arduino-uno-q-keypad-lcd */ from arduino.app_utils import * import requests import time TELEGRAM_BOT_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN" CHAT_ID = "YOUR_CHAT_ID" last_update_id = 0 last_confirmed = "" def get_updates(): global last_update_id url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/getUpdates" params = {"offset": last_update_id + 1, "timeout": 5} try: response = requests.get(url, params=params, timeout=10) data = response.json() if data["ok"]: return data["result"] except Exception as e: print(f"Error getting updates: {e}") return [] def send_message(chat_id, text): url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage" payload = {"chat_id": chat_id, "text": text} try: requests.post(url, data=payload, timeout=10) except Exception as e: print(f"Error sending message: {e}") def loop(): global last_update_id, last_confirmed # Auto-notify Telegram when # is pressed (entry confirmed) status = Bridge.call("get_status") if status.startswith("Confirmed:") and status != last_confirmed: last_confirmed = status msg = f"Keypad entry confirmed: {status[len('Confirmed: '):]}" print(msg) send_message(CHAT_ID, msg) # Handle incoming Telegram commands updates = get_updates() for update in updates: last_update_id = update["update_id"] if "message" not in update: continue message = update["message"] chat_id = message["chat"]["id"] text = message.get("text", "").strip() print(f"Received: {text}") if text == "/start": send_message(chat_id, "Arduino UNO Q Keypad + LCD Bot\n" "/typed - Get what's currently typed on the keypad\n" "/clear - Clear the LCD display\n" "/status - Get display status") elif text == "/typed": result = Bridge.call("get_typed") if result: send_message(chat_id, f"Typed: {result}") else: send_message(chat_id, "Nothing typed yet") elif text == "/clear": result = Bridge.call("clear_lcd") last_confirmed = "" send_message(chat_id, result) elif text == "/status": result = Bridge.call("get_status") send_message(chat_id, result) else: send_message(chat_id, "Unknown command. Send /start for help.") time.sleep(0.3) App.run(user_loop=loop)

Étapes Rapides

  • Remplacez YOUR_TELEGRAM_BOT_TOKEN par votre vrai token de bot obtenu depuis BotFather.
  • Remplacez YOUR_CHAT_ID par votre identifiant de chat Telegram.
  • Collez ce code Python dans le fichier Python de votre application (conservez le même sketch MCU).
  • Cliquez sur le bouton Run. Tapez sur le clavier et appuyez sur # — votre chat Telegram reçoit une notification.

Sortie de la Console App Lab

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:15:00] Waiting for Telegram messages... [2026-04-29 09:15:10] Keypad entry confirmed: 1234 [2026-04-29 09:15:25] Received: /typed [2026-04-29 09:15:40] Received: /clear
Telegram
Telegram 12:45
Welcome to Telegram!
ArduinoBot 10:19
Chatting with Arduino...
telegram-botfather
BotFather Yesterday
Your bot has been created.

ArduinoBot

bot
Today
/typed
10:15 AM ✓✓
Typed: 1234
10:16 AM
(presses # on keypad)
10:17 AM ✓✓
Keypad entry confirmed: 1234
10:18 AM
/clear
10:19 AM ✓✓
OK
10:20 AM
/status
10:21 AM ✓✓
LCD: empty
10:22 AM

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 de Projets

Vous pouvez réaliser de nombreux projets créatifs en combinant le clavier et le LCD avec Arduino UNO Q :

  • Affichage de code PIN distant : L'utilisateur tape un code PIN sur le clavier et il apparaît sur le LCD — le MPU reçoit une alerte Telegram avec le code PIN saisi lorsque # est pressé
  • Enregistreur de saisies intelligent : Toutes les saisies confirmées au clavier sont enregistrées avec des horodatages sur le MPU Linux et transmises à Telegram pour la surveillance à distance
  • Tableau d'affichage de messages : Le côté Python envoie une chaîne de texte via Bridge et le MCU l'affiche sur le LCD, tandis que le clavier peut être utilisé pour faire défiler les messages
  • Validateur de code d'accès : Python valide la saisie confirmée au clavier par rapport à une liste de codes autorisés et envoie "Accès accordé" ou "refusé" via Telegram
  • Interface de saisie en plusieurs étapes : Utilisez le LCD pour guider l'utilisateur à travers une séquence de saisie en plusieurs étapes (par exemple, saisir d'abord un code, puis une valeur) — Python suit l'état des étapes

Défiez-vous

Prêt à aller plus loin avec le clavier et le LCD sur Arduino UNO Q ? Essayez ces défis :

  • Facile : Modifiez le sketch MCU pour afficher "CORRECT" ou "INCORRECT" sur la deuxième ligne du LCD lorsque # est pressé, selon que la saisie correspond ou non à un mot de passe fixe.
  • Moyen : Ajoutez une fonction Bridge display_message(String) qui efface le LCD et affiche un message personnalisé envoyé depuis Python — permettant au MPU Linux d'écrire n'importe quoi sur l'écran à distance.
  • Avancé : Construisez un panneau d'accès contrôlé par Telegram complet : les utilisateurs tapent un code PIN sur le clavier, le MPU le valide via Bridge, envoie un résultat Telegram, et si correct, active un relais. Enregistrez toutes les tentatives avec des horodatages du côté Linux.

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !