MATERIALES

  • Protoboard
  • Arduino UNO
  • Paltalla LCD 16x2
  • Servomotor 9G
  • Jumpers macho macho
  • Jumpers Macho hembra
  • Tira de Pines
  • Potenciometro 10K ohms
  • Navaja o Cutter
  • Regla

CIRCUITO


CÓDIGO

// CODIGO CREADO POR FELIX SALGUERO - CREACION XD

#include <Keypad.h> //Libreria Matriz 4x4
#include <LiquidCrystal.h> //Libreria LCD
#include <Servo.h> //Libreria Servo

Servo myservo;//Crear Onjeto de Servomotor
char array1[]="   CREACION XD  ";  //1er Array de inicio LCD
char array2[]="   Caja Fuerte   ";  //2do Array de inicio

char c1,c2,c3,c4;//Declaracion caracteres contraseña
int tim = 250;  //Variable de tiempo

const byte ROWS = 4; //Numero de Filas
const byte COLS = 4; //Numero de Columnas

char hexaKeys[ROWS][COLS] = {//Definicion de caracteres del Matriz 4x4
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
byte rowPins[ROWS] = {7, 8, 9, 10}; //Pines de coneccion de Filas Matriz
byte colPins[COLS] = {11, 12, 13, 14}; //Pines de coneccion Columnas Matriz
 
//Inicializacion de funcion MAtriz
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

// Inicializacion de libreria LCD
LiquidCrystal lcd(0, 1, 2, 3, 4, 5); //Pines Conectados del LCD

void setup()
{
   myservo.attach(6); //Declaracion de conecction de Servomotor
  lcd.begin(16, 2);  //inicializacion LCD
  myservo.write(90); //Mover Servo a 90 grados
  lcd.clear();  //Borrar Pantalla LCD
 delay(1000);   //Delay 1 segundo
     lcd.setCursor(0,0);                    // Posicion de caracter LCD 0,0
    for (int positionCounter1 = 0; positionCounter1 < 16; positionCounter1++)
    {
      lcd.print(array1[positionCounter1]); // Impresion del 1er Array de inicio
      delay(80);                          //delay 80 ms
    }
    lcd.setCursor(0,1);                    // Posicion de caracter LCD 0,1
    lcd.print(array2);                    //Impresion 2do Array de inicio 
    delay(1500);                          //delay 1.5 seg.
    lcd.clear();                          //Borrar Pantalla
 delay(1000);                             //Delay 1 seg.
     lcd.setCursor(0,0);                    // Posicion de caracter LCD 0,0
    lcd.print("DIGITE PASSWORD");           //Impresion en Pantalla
  lcd.setCursor(6,1);                       //Posicion de caracter LCD 6,1
}


void loop ()                                //inicio de programa principal
{
char customKey = customKeypad.getKey();//Lectura Matriz
while   (!customKey){
  customKey = customKeypad.getKey();
              //Espera de un dato de la Matriz
  }
  if(c1==0){        
    c1=customKey;       //Guardar 1er Caracter en C1
    lcd.print(c1);      //Impirmir C1 en LCD
  }
  else if(c2==0){
    c2=customKey;       //Guardar 2do Caracter en C2
    lcd.print(c2);      //Imprimir C2 en LCD
  }
  else if(c3==0){
    c3=customKey;       //Guardar 3er Caracter en C3
    lcd.print(c3);      //Impirmir C3 en LCD
  }
  else if(c4==0&&customKey!='*'){
    c4=customKey;     //Guardar 4to Caracter en C4
    lcd.print(c4);    //Imprimir C4 en LCD
    delay(1000);      //Delay 1 seg
  }

  if(c1!=0&&c2!=0&&c3!=0&&c4!=0){     //Funcion que se inicia cuando los 4 Caracteres Son Guardados
         
    if(c1=='1'&&c2=='2'&&c3=='3'&&c4=='4'){     //Comparacion de Caracteres con Contraseña DEFAULT C1=='1'. C2=='2', C3=='3', C4=='4'
       lcd.setCursor(0,1);                      //Posicion Caracter LCD 0,1
       lcd.print("   CORRECTO");                //Impresion CORRECTO en LCD
       myservo.write(0);                        //Mover Servo a 0 Grados para Abrir la Caja Fuerte
      
    }else{
      lcd.setCursor(0,1);                       //Posicion Caracter LCD 0,1
       lcd.print("   INCORRECTO");              //Impresion INCORRECTO en LCD
       delay(1000);                             //Delay 1 segundo
       lcd.clear();                             //Borrar Pantalla
     lcd.setCursor(0,0);                    // Posicion Caracter 0,0
    lcd.print("DIGITE PASSWORD");             //Impresion DIGITE PASSWORD en LCD
  lcd.setCursor(6,1);                         //Posicion Caracter 6,1
  c1=0;                                        //Reinicio de C1
  c2=0;                                       //Reicicio de C2
  c3=0;                                       //Reicicio de C3
  c4=0;                                       //Reicicio de C4
    }
  }

if(customKey=='#'){                         //Comparacion si Caracter == # para Cerrar Caja
 myservo.write(90);                         //Mover servo a 90 grados
lcd.clear();                                //Borrar LCD
     lcd.setCursor(0,0);                    // Psicion Caracter 0,0
    lcd.print("  CAJA CERRADA");            // Impresion CAJA CERRADA LCD
    delay(1000);                            //Delay 1 Seg
    lcd.setCursor(0,0);                     //Posicion Caracter 0,0
      lcd.print("DIGITE PASSWORD");         //Impresion DIGITE PASSWORD en LCD
  lcd.setCursor(6,1);                       //Posicion Caracter 6,1
  c1=0;         //Reinciio C1
  c2=0;         //Reinciio C2
  c3=0;         //Reinciio C3
  c4=0;         //Reinciio C4
}

if(customKey=='*'){                         //Comparacion si Caracter == * para Borrar contraseña
lcd.clear();                                //Borrar LCD
    lcd.setCursor(0,0);                     //Posicion Caracter 0,0
      lcd.print("DIGITE PASSWORD");         //Impresion DIGITE PASSWORD en LCD
  lcd.setCursor(6,1);                       //Posicion Caracter 6,1
  c1=0;         //Reinciio C1
  c2=0;         //Reinciio C2
  c3=0;         //Reinciio C3
  c4=0;         //Reinciio C4
}
  
}


 Si no pueden encontrar la librería de Keypad aquí se las dejo: