/*
Capitulo 9 de Arduino desde cero en Español
Programa que permite conectar un teclado matricial de membrana de 4x4 y realizar
un simple control de acceso con contraseña. Debe instalarse la libreria Keypad.
Autor: bitwiseAr
*/
#include <Keypad.h> // importa libreria Keypad
int relais = 10;
const byte FILAS = 4; // define numero de filas
const byte COLUMNAS = 4; // define numero de columnas
char keys[FILAS][COLUMNAS] = { // define la distribucion de teclas
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte pinesFilas[FILAS] = {9,8,7,6}; // pines correspondientes a las filas
byte pinesColumnas[COLUMNAS] = {5,4,3,2}; // pines correspondientes a las columnas
Keypad teclado = Keypad(makeKeymap(keys), pinesFilas, pinesColumnas, FILAS, COLUMNAS); // crea objeto
char TECLA; // almacena la tecla presionada
char CLAVE[7]; // almacena en un array 6 digitos ingresados
char CLAVE_MAESTRA[7] = "123456"; // almacena en un array la contraseña maestra
byte INDICE = 0; // indice del array
void setup()
{
Serial.begin(9600); // inicializa comunicacion serie
pinMode(relais, OUTPUT);
}
void loop(){
TECLA = teclado.getKey(); // obtiene tecla presionada y asigna a variable
if (TECLA) // comprueba que se haya presionado una tecla
{
CLAVE[INDICE] = TECLA; // almacena en array la tecla presionada
INDICE++; // incrementa indice en uno
Serial.print(TECLA); // envia a monitor serial la tecla presionada
}
if(INDICE == 6) // si ya se almacenaron los 6 digitos
{
if(!strcmp(CLAVE, CLAVE_MAESTRA)) { // compara clave ingresada con clave maestra
Serial.println(" Correcta"); // imprime en monitor serial que es correcta la clave
digitalWrite(relais, LOW);
millis(5000);
digitalWrite(relais, HIGH);
}
else
Serial.println(" Incorrecta"); // imprime en monitor serial que es incorrecta la clave
INDICE = 0;
}
}