Clave de seguridad con Teclado Matricial 4×4 y Arduino

Ya hace tiempo que quería realizar una practica, sin embargo con el trabajo y el estrés del día a día es un poco complicado hacer tiempo libre para realizar una. Ahora contra todo pronostico realizaremos una practica simple en la que emplearemos un Teclado Matricial 4×4 y Arduino.

Es esta practica realizaremos un sistema de seguridad que se vea plasmado en el monitor serial del software Arduino, el código máximo sera de 4 dígitos y la salida digital que utilizaremos sera la 13, esto con el fin de que el Led que posee incorporado nuestro Arduino encienda y nos indique que la cable es correcta

Materiales que se utilizaran:

Si no tienes los siguientes materiales, puedes comprarlo en nuestra tienda oficial: http://electronicastore.net

Objetivo de la practica: Realizar un programa que requiera una clave de seguridad para encender un led (este led puede ser cambiado por relevadores y terminar el proyecto con cerraduras electromagnéticas), si la clave es incorrecta entonces el led no se encenderá, si la clave es correcta entonces el led se encendera y se mostrara en el monitor serial «password correcta», para volver a activar el sistema se debe ingresar nuevamente la clave para que se apague el led.

Archivos completos de la practicaTeclado Matricial 4×4 y Arduino

barra-separadora

Conexiones del Teclado Matricial 4×4 y Arduino:

Las conexiones son las mismas que hemos utilizado en las practicas que ya estan en la web, si requieres del texto original entonces visita este tema: Utilizar el teclado matricial 4×4 con Arduino

A continuación te dejamos una imagen con las conexiones de cada pin:

Anuncio
Conexiones del Teclado Matricial 4x4 y Arduino
Conexiones del Teclado Matricial 4×4 y Arduino

barra-separadora

Programación en Arduino:

La siguiente programación cumple con el objetivo que se estableció al principio de la practica, en esta se hacen uso de variables y siclos If, como siempre primero te daremos el código final y en el mismo código te explicaremos para que sirve cada una de las lineas que se utilizaron.

#include <Keypad.h>; // Con esta linea llamamos a la librería Keypad para que arduino reconozca el teclado
char contrasena[]="2222"; // En esta linea creamos la constante de cadena llamada contraseña (el numero 2222 puede ser cambiado)
char codigo[4]; // Creamos otra constante, en esta se guardaran los caracteres que presionemos en nuestro teclado matricial 4x4
int cont=0; // Esta es una variable que nos servirá más adelante
 
const byte ROWS = 4; //Este código se estable para definir que nuestro teclado tiene 4 filas 
const byte COLS = 4; //Este código se estable para definir que nuestro teclado tiene 4 columnas
 
char hexaKeys[ROWS][COLS] = //En el siguiente matriz se agregan en orden las teclas que posee nuestro teclado
{
 {'1','2','3','A'},
 {'4','5','6','B'},
 {'7','8','9','C'},
 {'*','0','#','D'}
};
 
byte rowPins[ROWS] = {9, 8, 7, 6}; // Estos son los pines de conexión de Arduino de las columnas
byte colPins[COLS] = {5, 4, 3, 2}; //Estos son los pines de conexión de Arduino de las filas
 
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); //En este punto el teclado se inicia y realiza el mapeo de sus teclas con respecto a la matriz colocada arriba
 
void setup()
{
 pinMode(13, OUTPUT); //El pin 13 sera nuestra salida digital (así aprovecharemos el led que pose)
 Serial.begin(9600); //Se inicia el puerto serial
}
 
void loop()
{
 char customKey = customKeypad.getKey(); //esta linea indica que el carácter presionado se guardara en la variable customKey
 if (customKey != NO_KEY) //Con este siclo preguntamos si se presiono una tecla, si se presiono entonce el ciclo continua
 {
 codigo[cont]=customKey; //se guardaran los caracteres presionados en codigo[cont]
 Serial.print(codigo[cont]); //Se imprime en nuestro monitor serial lo que este guardado en codigo[cont]
 cont=cont+1; //incrementamos la variable cont (esto con el fin de tener los 4 dígitos que requerimos)
 if(cont==4) //Ahora comienza otro siclo if, en el cual se pregunta si ya hay 4 datos guardados y si es así entonce el siclo continua
 
 {
 
 if(codigo[0]==contrasena[0]&&codigo[1]==contrasena[1]&&codigo[2]==contrasena[2]&&codigo[3]==contrasena[3])
 {
 
 digitalWrite(13,!digitalRead(13)); //si lo anterior es verdad entonces se encenderá el led, si se ingresa nuevamente la contraseña entonces se apagara
 Serial.println("Password correcta"); //si la contraseña es correcta entonces se imprime ""Password correcta")
 
 }
 if(codigo!=contrasena) //empieza un nuevo ciclo, esta vez indicamos si el código es diferente que la contraseña siga con el siclo
 {
 
 Serial.println("Password incorrecta"); // se imprime que que la Password es incorrecta
 }
 
 cont=0; //resetear a 0 la variable cont
 }
 }
}

barra-separadora

Revisión final del proyecto:

El proyecto funciona casi a la perfección, ya que por alguna razón al ingresar la contraseña correcta se muestra el mensaje de Password correcta y más abajo se muestra Password incorrecta, esto no afecta el funcionamiento del programa ya que el led se enciende y apaga tal y como se estable en el objetivo, ademas esto no sucede cuando se ingresa la contraseña correcta (si alguien revisa el código y descubre el problema le agradeceríamos que comparta la solución en los comentarios.

Este proyecto solo esta pensando para encender un led en caso de recibir la contraseña correcta, sin embargo solo se requiere de un modulo de relevadores y un cerradura electromagnética para implementar este proyecto a una escala real, ya que la salida del pin 13 del arduino es suficiente para mandar las señales a los relevadores.

Sin más por el momento esperamos que les halla servido esta practica que hoy desarrollamos, si tienen más ideas para otras practicas pueden dejar su comentario e intentaremos realizarla.

Artículos Relacionados

Deja una respuesta

8 Comments

  1. Hola. Este proyecto es muy interesante. Yo estoy intentando hacer una cerradura con teclado, tarjeta RFID y una pantalla led, me gustaría que me ayudaran a juntar el código del teclado y la tarjeta, ya que apenas estoy comenzando con arduino. Muchas gracias!

  2. hola muy buen proyectp.
    y para el pequeño error de la aparicion del password incorrecto solo cambiamos todo de esta linea
    if(codigo!=contrasena) //empieza un nuevo ciclo, esta vez indicamos si el código es diferente que la contraseña siga con el siclo
    {
    POR ESTA:
    else{
    Y YA QUEDA PERFECTO CON ESO.
    SALUDOS

  3. También puede solucionar el error indicando al final del ciclo de contraseña correcta que se inicie de nuevo la variable cont. Es decir
    If (…){Serial.print ()….;
    cont=0;
    }
    Pero esto hace que el ciclo de comprobacion de contraseña se inicie de nuevo.
    Está muy bien para enseñar como se escribe una contraseña.

  4. Si agregas un ELSE antes del IF(CODIGO!=CONTRASEÑA) se resuelve tu problema

    else//agregar esta linea
    if(codigo!=contrasena)

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies