Note
Bonjour, bienvenue dans la communauté SunFounder Raspberry Pi, Arduino et ESP32 sur Facebook ! Plongez dans l’univers du Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.
Pourquoi nous rejoindre ?
Support d’experts : Résolvez les problèmes après-vente et les défis techniques grâce à l’aide de notre communauté et de notre équipe.
Apprendre et partager : Échangez des astuces et des tutoriels pour perfectionner vos compétences.
Avant-premières exclusives : Accédez en avant-première aux annonces de nouveaux produits et aux aperçus exclusifs.
Réductions spéciales : Profitez de remises exclusives sur nos derniers produits.
Promotions festives et cadeaux : Participez à des tirages au sort et des promotions spéciales.
👉 Prêt à explorer et créer avec nous ? Cliquez sur [ici] et rejoignez-nous dès aujourd’hui !
4.2 - Clavier 4x4
Le clavier 4x4, également connu sous le nom de clavier matriciel, est une matrice de 16 touches disposées sur un seul panneau.
Le clavier peut être trouvé sur des appareils nécessitant principalement une saisie numérique, tels que les calculatrices, télécommandes de télévision, téléphones à boutons-poussoirs, distributeurs automatiques, guichets automatiques (DAB), serrures à combinaison et serrures de porte numériques.
Dans ce projet, nous allons apprendre à déterminer quelle touche est pressée et obtenir la valeur de la touche correspondante.
Composants requis
Dans ce projet, nous avons besoin des composants suivants.
Il est plus pratique d’acheter un kit complet, voici le lien :
Nom |
ARTICLES DANS CE KIT |
LIEN D’ACHAT |
|---|---|---|
Kit Kepler |
450+ |
Vous pouvez également les acheter séparément via les liens ci-dessous.
N° |
INTRODUCTION DES COMPOSANTS |
QUANTITÉ |
LIEN D’ACHAT |
|---|---|---|---|
1 |
1 |
||
2 |
Câble Micro USB |
1 |
|
3 |
1 |
||
4 |
Plusieurs |
||
5 |
4 (10KΩ) |
||
6 |
1 |
Schéma

Les rangées du clavier (G2 ~ G5) sont programmées pour être en état haut ; si l’une des broches G6 ~ G9 est lue comme étant en état haut, cela indique quelle touche est pressée.
Par exemple, si G6 est en état haut, alors la touche numérique 1 est pressée ; c’est parce que les broches de commande de la touche numérique 1 sont G2 et G6, et quand cette touche est pressée, G2 et G6 seront connectées ensemble, donc G6 sera également en état haut.
Câblage

Code
Note
Vous pouvez ouvrir le fichier
4.2_4x4_keypad.inosous le cheminkepler-kit-main/arduino/4.2_4x4_keypad.Ou copiez ce code dans l”Arduino IDE.
N’oubliez pas de sélectionner la carte Raspberry Pi Pico et le port correct avant de cliquer sur le bouton Upload.
La bibliothèque
Adafruit Keypadest utilisée ici, vous pouvez l’installer depuis le Library Manager.
Après l’exécution du programme, la console affichera les touches que vous avez pressées sur le clavier.
Comment ça fonctionne
Inclusion de la bibliothèque
Nous commençons par inclure la bibliothèque
Adafruit_Keypad, qui nous permet de facilement interagir avec le clavier.#include "Adafruit_Keypad.h"
Configuration du clavier
const byte ROWS = 4; const byte COLS = 4; char keys[ROWS][COLS] = { { '1', '2', '3', 'A' }, { '4', '5', '6', 'B' }, { '7', '8', '9', 'C' }, { '*', '0', '#', 'D' } }; byte rowPins[ROWS] = { 2, 3, 4, 5 }; byte colPins[COLS] = { 8, 9, 10, 11 };
Les constantes
ROWSetCOLSdéfinissent les dimensions du clavier.keysest un tableau 2D qui stocke l’étiquette de chaque touche sur le clavier.rowPinsetcolPinssont des tableaux qui stockent les broches de l’Arduino connectées aux lignes et colonnes du clavier.
Initialisation du clavier
Créez une instance de
Adafruit_KeypadappeléemyKeypadet initialisez-la.Adafruit_Keypad myKeypad = Adafruit_Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
Fonction setup()
Initialisez la communication série et le clavier personnalisé.
void setup() { Serial.begin(9600); myKeypad.begin(); }
Boucle principale
Vérifiez les événements de touche et affichez-les dans le moniteur série.
void loop() { myKeypad.tick(); while (myKeypad.available()) { keypadEvent e = myKeypad.read(); Serial.print((char)e.bit.KEY); if (e.bit.EVENT == KEY_JUST_PRESSED) Serial.println(" pressed"); else if (e.bit.EVENT == KEY_JUST_RELEASED) Serial.println(" released"); } delay(10); }