/*
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
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()
{
[Link](9600); // inicializa comunicacion serie
}
void loop(){
TECLA = [Link](); // 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
[Link](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
[Link](" Correcta"); // imprime en monitor serial que es correcta la
clave
else
[Link](" Incorrecta"); // imprime en monitor serial que es
incorrecta la clave
INDICE = 0;
}
}