Projet Arduino pour un système d’accès par code PIN avec clavier matriciel 4x4 et LED de confirmation, gestion de saisie et réinitialisation automatique.
#include <Keypad.h>
// Définition des dimensions du clavier
const byte righe = 4; // Nombre de lignes du clavier
const byte colonne = 4; // Nombre de colonnes du clavier
// Mappage des touches du clavier 4x4
char tasti[righe][colonne] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
// Pins connectés aux lignes et colonnes
byte pinRighe[righe] = {9, 8, 7, 6};
byte pinColonne[colonne] = {5, 4, 3, 2};
// Création de l'objet clavier
Keypad tastierino = Keypad( makeKeymap(tasti), pinRighe, pinColonne, righe, colonne );
// LED de confirmation connectée au pin 13
const int pinLED = 13;
// Code PIN correct
const String codicePIN = "1234";
// Variables pour gestion de la saisie du PIN
String inputPIN = "";
unsigned long tempoUltimaPressione = 0;
const unsigned long timeoutInserimento = 10000; // 10 secondes de délai pour réinitialiser la saisie
void setup() {
pinMode(pinLED, OUTPUT); // Configuration du pin LED en sortie
digitalWrite(pinLED, LOW); // LED éteinte au démarrage
Serial.begin(9600); // Pour débogage série
Serial.println("Système d'accès par PIN prêt.");
}
void loop() {
char tasto = tastierino.getKey(); // Lit la touche pressée
if (tasto) { // Si une touche a été pressée
tempoUltimaPressione = millis(); // Met à jour le temps de la dernière pression
if (tasto == '*') {
// '*' utilisé pour effacer la saisie en cours
inputPIN = "";
Serial.println("Saisie PIN effacée.");
digitalWrite(pinLED, LOW); // Éteint la LED si allumée
} else if (tasto == '#') {
// '#' utilisé pour confirmer la saisie
Serial.print("PIN saisi : ");
Serial.println(inputPIN);
if (inputPIN == codicePIN) {
Serial.println("Accès autorisé.");
digitalWrite(pinLED, HIGH); // Allume la LED pour confirmation
} else {
Serial.println("Accès refusé.");
digitalWrite(pinLED, LOW); // Éteint la LED
}
inputPIN = ""; // Réinitialise la saisie après vérification
} else if (inputPIN.length() < 8) {
// Ajoute le caractère au PIN saisi (max 8 chiffres)
inputPIN += tasto;
Serial.print("Tapé : ");
Serial.println(inputPIN);
}
}
// Réinitialise la saisie si délai écoulé sans pression
if (inputPIN.length() > 0 && (millis() - tempoUltimaPressione > timeoutInserimento)) {
Serial.println("Timeout : saisie PIN réinitialisée.");
inputPIN = "";
digitalWrite(pinLED, LOW); // Éteint la LED
}
}Arduino Uno (x1)
Clavier matriciel 4x4 (x1)
LED verte 5mm (x1)
Résistance 220Ω (x1)
Fils de connexion
Plaque d'essai (optionnelle)
CONNEXIONS : Clavier 4x4 connecté aux pins numériques Arduino : Lignes -> D9, D8, D7, D6 ; Colonnes -> D5, D4, D3, D2
CONNEXIONS : Anode LED connectée au pin D13 via une résistance 220Ω, cathode à GND