Comme son nom l’indique il est représenté selon un schéma matriciel. Il en existe de plusieurs types : 4×4, 3×4, 4×5… Nous utiliserons le type 4×4. Ce clavier comprend 16 touches disposées en 4 lignes et 4 colonnes. L’appui sur une touche fait communiquer une ligne avec une colonne.
Prérequis
aucun
Contenu du cours
Que ce soit une calculatrice ou le digicode d’un immeuble,
nous nous servons couramment des claviers numériques. Le clavier numérique 4×4
est une matrice de 16 boutons dont les états peuvent être détectés par un
microcontrôleur.
Image : Clavier
matriciel 4*4
Chaque touche correspond à une ligne et à une colonne. Les lignes sont des sorties. Les colonnes sont des entrées maintenues au niveau haut par une résistance interne à Arduino. Nous n’entrerons pas dans les détails de la programmation vu que les programmeurs ont pensé à tout. Ils ont écrit une bibliothèque qui nous facilite la tâche.
Les pins L1, L2, L3, et L4 représentent les lignes dans l’ordre, aussi les pins C1, C2, C3 et C4 représentent les colonnes dans l’ordre.
Avant de continuer, allez vérifier si vous disposez de la bibliothèque parlée précédemment, Keypad.h. Ouvrez votre IDE puis effectuez cette action après avoir ouvert la barre de menu :
Croquis -> Inclure une bibliothèque. Défilez donc pour voir si vous disposez de cette bibliothèque.
Dans le cas où vous ne l’aurez pas suivez les instructions suivantes :
Croquis -> Inclure une bibliothèque -> Gérer les bibliothèques ;
Ensuite recherchez clavier, une fois trouvé, cliquez sur son entrée et le bouton d’installation apparaitra ;
Voici quelques fonctions de cette bibliothèque :
char waitForKey (), elle attend l’appui sur une touche ;
char getKey (), elle retourne la valeur de la touche pressée, dans le cas contraire elle retourne la constante NO_KEY ;
char getState (), elle renvoie l’état d’une touche ;
setHoldTime (unsigned int hour), elle définit le temps que doit durer l’appui sur une touche pour être prise en compte ;
setDebounceTime (unsigned int hour), elle empêche la prise en compte de la touche trop proche du précédent ;
addEventListener (keypadEvent), elle déclenche un évènement si le clavier est utilisé.
Dans notre programme nous utiliserons getKey (). Les autres explications suivront dans le code.
Clavier matriciel 4×4
Carte Arduino
Fils de connexion
Câblage dans Fritzing
Connectez la ligne 1 au pin 9
Connectez la ligne 2 au pin 8
Connectez la ligne 3 au pin 7
Connectez la ligne 4 au pin 6
Connectez la colonne 1 au pin 5
Connectez la colonne 2 au pin 4
Connectez la colonne 3 au pin 3
Connectez la colonne 4 au pin 2
.Code
1
#include <Keypad.h> // ajout de la bibliothèque au fichier
2
constbyteLIGNES=4; // nombre de lignes du clavier
3
constbyteCOLONNES=4; // nombre de colonnes du clavier
//création d'un objet keypad : initialisation du clavier
11
voidsetup () {
12
Serial.begin(9600);
13
Serial.println ("Initialisation du clavier");
14
}
15
voidloop () {
16
touche=clavier.getKey (); // lecture de la touche appuyé
17
if (touche!=NO_KEY) // gestion d'une touche si elle est pressée
18
{
19
Serial.println (touche); // affichage du caractère dans le moniteur série
20
delay(300);
21
}
22
}
Il est possible d’utiliser un autre clavier pour gérer d’autres caractères de votre choix. Il suffit juste de l’ajouter au câblage et de reprendre le même processus que dans le code ci-dessus en utilisant d’autres noms pour vos nouvelles variables et votre deuxième clavier. Vous pouvez donc initialiser vos nouveaux caractères de la manière suivant identique à celle faite dans le code :