.
Composants utilisés
Principe de fonctionnement
Le clavier comporte 16 touches, dont 10 numériques (0-9) et 6 touches marquées # * A B C D.
Il est matriciel : au lieu d'avoir 16 fils (1 par touche) et une masse, le multiplexage n'utilise que 8 sorties : 4 lignes et 4 colonnes.
Utilisations
- Téléphonie
- Clavier de digicode
- Clavier d'alarme
- Saisie de données numériques dans un programme Arduino (calibrage...)
- Choix de menu...
Câblage
Il y a 8 fils en sortie du clavier, 4 lignes et 4 colonnes.
Vu de face, de gauche à droite :
pin 1-4 les quatre lignes, pin 5-8 les quatre colonnes.
On le branche sur les 8 entrées digitales successives de la carte Arduino Uno de D9 à D2
pin1 --> D9
pin 2--> D8
pin 3--> D7
pin 4--> D6
pin 5--> D5
pin 6--> D4
pin 7--> D3
pin 8--> D2
Programmation
Télécharger et installer la librairie Keypad.h
http://arduino.cc/fr/Main/LibrairieKeypad
Ce programme créé un objet de type Keypad, puis lit les entrées clavier et affiche sur le serial monitor les entrées.
On peut avec cette librairie :
- lire la touche appuyée : char getKey()
- surveiller l'état du clavier : KeypadState getState()
- définir un délai d'appui pour valider la saisie : setHoldTime(unsigned int time)
- paramétrer une pause anti-rebond : setDebounceTime(unsigned int time)
- créer un événement si le clavier est utilisé : addEventListener(keypadEvent)
- Code: Tout sélectionner
//*************************************************
// Clavier à membranne 16 touches avec Arduino
// tiptopboards.com 16 09 2013 C Rolland
// Exemple d'utilsiation du clavier 4 x4 touches
//
//
//*************************************************
#include <Keypad.h>
const byte ROWS = 4; //4 lignes
const byte COLS = 4; //4 colonnes
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
//Brancher le clavier sur 2 3 4 5 (colonnes) et 6 7 8 9 (lignes)
byte rowPins[ROWS] = {9, 8, 7, 6}; //Lignes
byte colPins[COLS] = {5, 4, 3, 2}; //Colonnes
// Connections des touches
/*
S1 contact 4 8
S2 contact 3 8
S3 contact 2 8
S4 contact 1 8
S5 contact 4 7
S6 contact 3 7
S9 contact 4 6
S10 contact 3 6
S11 contact 2 6
S12 contact 1 6
S13 contact 4 5
S14 contact 3 5
S15 contact 2 5
S16 contact 1 5
*/
// Initialiser une instance de la classe keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
Serial.begin(9600); //Serial monitor
Serial.println("Test de clavier 16 touches");
// Pour activer l'état HOLD
unsigned int time_hold = 4;
keypad.setHoldTime(time_hold);
//Anti rebond
unsigned int time_anti_rebond = 4; //4 ms
keypad.setDebounceTime(time_anti_rebond);
}
void loop(){
char key = keypad.getKey();
if (key != NO_KEY){
Serial.println(key); //Affiche la touche saisie
}
} //Fin de void loop
Références
How to Connect and Read a Keypad with an Arduino (en anglais)
http://www.learningaboutelectronics.com ... ircuit.php
Contrôle d'accès avec mot de passe (en anglais)
http://www.instructables.com/id/Access- ... ogramming/