Ingreso Por Clave Con Arduino TinkerCad

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 10

Ingreso Por clave con Arduino, Simulación en TinkerCAD

Generalmente bastaría con realizar las conexiones detalladas en el diagrama y luego de ello
ingresar el código de funcionamiento general, en mi caso acostumbro a realizar una prueba de
funcionamiento independiente con códigos para cada uno de los componentes, de esta manera se
descartan fallos en sus conexiones, dejare a continuación el diagrama de conexiones seguido de
cada uno de estos códigos.

Si lo que buscas es el código para el funcionamiento en general lo encontraras con el título de:
Código Final, Ingreso por clave con Teclado y Lcd.

Puedes descartar los otros códigos y proceder a la prueba directa si lo prefieres.

Diagrama de conexiones simulador online TinkerCAD

Lista de códigos

1. Identificación de Teclas Teclado Matricial 4x4


#include <Keypad.h> // Incluimos la libreria para el uso de nuestro teclado matricial
// Creamos dos constantes las cuales determinan el numero de filas y columnas de nuestro
tecladoz<
const byte filas = 4;
const byte columnas = 4;
// Se crean dos vectores aqui colocaremos los pines del arduino asociados a las filas y
columnas del teclado
byte pinesFilas [] ={13,12,11,10};
byte pinesColumnas [] ={9,8,7,6};
// Este sera el arreglo que nos dara los caracteres de cada uno de los botones del teclado
matricial
char teclas [4][4]= { {'1','2','3','A' },
{'4','5','6','B' },
{'7','8','9','C' },
{'*','0','#','D' } };
// Creamos el objeto de el contenido del Keypad con las variables creadas
Keypad teclado1 = Keypad (makeKeymap(teclas), pinesFilas, pinesColumnas, filas, columnas
);
void setup() {
// Iniciamos el monitor en serie
Serial.begin(9600);
// Mostramos texto en monitor serie
Serial.println("Teclado 4x4 con Biblioteca Keypad");
Serial.println();

}
void loop() {
// Verifica si alguna tecla fue presionanda, comando getkey();
char tecla_presionada = teclado1.getKey();
// Monitor en serie
if ( tecla_presionada)
{
Serial.print("Tecla"); // si se presiona una tecla se muestra este mensaje
Serial.println (tecla_presionada); // si se presiona una tecla se muestra el valor de la
variable (tecla_presionada);, en este caso el numero o signo de la tecla
}
}

Verificación de Teclas teclado Matricial 4x4.


2. Código de escaneo Dirección Display con Modulo i2c (i2c Scanner)

#include <Wire.h> // incluimos libreria l cual permite la comunicacion con dispositivos 12C/TWI en
las placas arduino

// Con el diseño R3(1.0 pinout),SDA(linea de datos y SCL(linea de reloj)

// Configuramos el bus I2C para usar,Wire,Wire1,Etc.

#define WIRE Wire // Para ejecutar el escaneo I2C en un bus diferente cambiar esta linea de
codigo

void setup() {

WIRE.begin(); // Iniciamos el escaneo

Serial.begin(9600); // Iniciamos monitor serie

while (!Serial)

delay(10);

Serial.println("\nI2C Scanner"); // Mostramos texto en monitor serie

void loop() {

byte error, address;

int nDevices;

Serial.println("Escaneando...");

nDevices = 0;

for(address = 1; address < 127; address++ )

// el i2c escaner usa el valor de retorno de //WIRE.endTransmission();

// para ver si un dispositivo reconocio la direccion.

WIRE.beginTransmission(address);

error = WIRE.endTransmission();

if (error == 0)

Serial.print("Dispositivo I2C encontrado en la dirección 0x");


if (address<16)

Serial.print("0");

Serial.print(address,HEX);

Serial.println(" !");

nDevices++;

else if (error==4)

Serial.print("Error desconocido en la dirección 0x");

if (address<16)

Serial.print("0");

Serial.println(address,HEX);

if (nDevices == 0)

Serial.println("No se encontraron dispositivos I2C\n");

else

Serial.println("hecho\n");

delay(5000); // Esperamos 5 segundos antes de escanear nuevamente

}
Conexión display Lcd 16x2 Con Modulo
I2c.

Código de escaneo Dirección de Display Lcd con módulo i2c.


1. Código Final , Ingreso por clave con Teclado y Lcd

#include <Keypad.h>; // Con esta linea llamamos a la librería Keypad para que arduino reconozca
el teclado

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

//Crear el objeto lcd dirección 0x3F y 16 columnas x 2 filas

LiquidCrystal_I2C lcd(0x20,16,2); //

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

int LedVerde=2;

int LedRojo=3;

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] = {13, 12, 11, 10}; // Estos son los pines de conexión de Arduino de las
columnas

byte colPins[COLS] = {9, 8, 7, 6}; //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()

// Inicializar el LCD

lcd.init();

//Encender la luz de fondo.

lcd.backlight();

// Escribimos el Mensaje en el LCD.

lcd.print("Ingrese Clave");

pinMode(LedVerde, OUTPUT); //El pin 2 sera nuestra salida digital

pinMode(LedRojo, OUTPUT); //El pin 3 sera nuestra salida digital

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(2,!digitalRead(2)); //si lo anterior es verdad entonces se encenderá el led, si se


ingresa nuevamente la contraseña entonces se apagara

Serial.println("Clave correcta"); //si la contraseña es correcta entonces se imprime ""Password


correcta")

lcd.setCursor(0,1);

lcd.print("Clave Correcta");

delay(10);

if(codigo!=contrasena) //empieza un nuevo ciclo, esta vez indicamos si el código es diferente que
la contraseña siga con el siclo

digitalWrite(3,!digitalRead(3)); //si lo anterior es verdad entonces se encenderá el led, si se


ingresa nuevamente la contraseña entonces se apagara

Serial.println("Clave incorrecta"); // se imprime que que la Password es incorrecta

lcd.setCursor(0,1);

lcd.print("Clave Incorrecta");

delay(10);

}
cont=0; //resetear a 0 la variable cont

Código para ingreso por clave, Es una combinación de los códigos anteriores.
Si te gusto el contenido, deja tu Like y suscríbete de esta manera contribuyes a más proyectos
como este en mi canal, saludos.

También podría gustarte