MTkeypad: Exemple 1
Gestion par événements pour UNO, Nano, Mega
Serrure codée
Ce programme simule une serrure codée à 4 chiffres
Exemple de programme complet
Ce programme se fait complètement sous interruption, et libère loop qui peut être utilisé pour faire autre chose.
// Simulation d'une serrure codée.
//
// Code:1789# soit touches N°0, 6, 7, 8, 11
// 4 5 6
// │ │ │
// ├─1 ├─2 ├─3
// │ └──│─┴──│─┴───A0
// ├─4 ├─5 ├─6
// │ └──│─┴──│─┴───A1
// ├─7 ├─8 ├─9
// │ └──│─┴──│─┴───A2
// └─* └─0 └─#
// └────┴────┴───A3
#include <MTobjects.h> // V1.1.0 Voir http://arduino.dansetrad.fr/MTobjects
// Broches du keypad
uint8_t pinLignes[] = {4 lignes_sur, A0, A1, A2, A3}; // Broches des lignes du keypad
uint8_t pinColonnes[] = {3 colonnes_sur, 4, 5, 6}; // Broches des colonnes du keypad
byte caracteresOK = 0; // Nombre de caractères justes déjà appuyés
byte code[4] = {0, 6, 7, 8}; // N° des touches pour 1789
const char touches[] = { // Correspondance pour l'affichage
'1','2','3',
'4','5','6',
'7','8','9',
'*','0','#'};
void nouvelleTouche(int8_t touche) // Appelé quand on appuie sur une touche
{
switch (touche)
{
case 9: break; // Touche * ignorée
case 11: // Touche #
if (caracteresOK == 4) // le code est bon
{
Serial.print("\nCode bon, mise sous tension de la gâche");
delay(1000);
Serial.println(" ... fin d'alimentation");
}
else Serial.println("\nCode incorrect");
caracteresOK = 0; // On recommence depuis le début
break;
default: // Une touche numérique est appuyée
Serial.print(touches[touche]); // Affichage du caractère correspondant
if (touche == code[caracteresOK]) // La touche est correcte
caracteresOK++; // Prêt pour la touche suivante
else caracteresOK = 0; // On recommence depuis le début
}
}
MTkeypad Keypad(pinLignes, pinColonnes, nouvelleTouche); // Mise en place du keypad
void setup()
{
Serial.begin(115200); // Mettre aussi la console sur 115200 bauds
}
void loop(){}