IntroducciónPoyecto donde arduino uno R3 valida la clave ingresada mediante un keypad y muestra los mensajes si es “Correcta la Clave o incorrecta” a través de un display lcd de 16×2. También en el sketch se controla el funcionamiento del código mediante el monitor serial del entorno de desarrollo Arduino.

Diagrama de conexión:

Ver video explicativo

 

Lo siguiente les proporcionare el sketch del Proyecto Validación de Clave, es de dominio publico.

/* 
Skech: Clave ingresada con teclado mostrando mensajes en Display 16x2
Autor:Ditecno Digital
Web: www.ditecno.com
Codigo de Dominio Publico
*/

#include <Password.h> //Incluimos la libreria Password
#include <Keypad.h> //Incluimos la libreria Keypad
#include <LiquidCrystal.h>  //Incluimos la libreria LiquidCrystal
 
Password password = Password("1234ABCD");  //Definimos el Password
int dlugosc = 8;                        //Largo del Password
int VO = 13; 
LiquidCrystal lcd(A0, A1, A2, A3, A4, A5); //Definimos los pines del LCD
int duracion = 50;//decimos la duracion de la alarma
int frecuenciaMin = 2000;
int frecuenciaMax = 4000;
int almacenador;//almacenamos la frecuencia de la alarma
int buzzer = 10; //Creamos las Variables de salida
int ledRed = 11; 
int ledGreen = 12;
 
int ilosc; //Numero de caracteres ingresados
 
const byte ROWS = 4; // Cuatro Filas
const byte COLS = 4; // Cuatro Columnas

// Definimos el Keymap
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

byte rowPins[ROWS] = { 9,8,7,6 };// Conectar los keypads ROW1, ROW2, ROW3 y ROW4 a esos Pines de Arduino.
byte colPins[COLS] = { 5,4,3,2 };// Conectar los keypads COL1, COL2, COL3 y COL4 a esos Pines de Arduino.
 
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
 
void setup()
{
  void alarma(); // metodo que se llama cuando la clave es erronea
  Serial.begin(9600);
  keypad.addEventListener(keypadEvent);  
  pinMode(ledRed, OUTPUT);  
  pinMode(ledGreen, OUTPUT);
  pinMode(buzzer, OUTPUT);
  
  analogWrite(VO, 50);
  digitalWrite(ledRed, LOW);
  digitalWrite(ledGreen, LOW);
 
  lcd.begin(16, 2);
 
  lcd.setCursor(0,0);
  lcd.print("  *Bienvenido*");
  lcd.setCursor(0,1);
  lcd.print("INGRESE LA CLAVE");
}
 
void loop()
{
  keypad.getKey();
}


void keypadEvent(KeypadEvent eKey)
{
  switch (keypad.getState())
  {
    case PRESSED:
   

  digitalWrite(buzzer, HIGH);  
  delay(250);            
  digitalWrite(buzzer, LOW);  
  delay(100);      
    
 
Serial.print("Digito presionado: ");
Serial.println(eKey);
 
switch (eKey)
{
 
default:
ilosc=ilosc+1;
password.append(eKey);
}

//estos condicionales es para formatear con asteriscos el lcd 
if(ilosc == 1)  // con un asterisco
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print("   < CLAVE >");
lcd.setCursor(0,1);
lcd.print("*_");
}
if(ilosc == 2)  // con dos asteriscos
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print("   < CLAVE >");
lcd.setCursor(0,1);
lcd.print("**_");
}
if(ilosc == 3)
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print("   < CLAVE >");
lcd.setCursor(0,1);
lcd.print("***_");
}
if(ilosc == 4)
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print("   < CLAVE >");
lcd.setCursor(0,1);
lcd.print("****_");
}
if(ilosc == 5)
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print("   < CLAVE >");
lcd.setCursor(0,1);
lcd.print("*****_");
}
if(ilosc == 6)
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print("   < CLAVE >");
lcd.setCursor(0,1);
lcd.print("******_");
}
if(ilosc == 7)
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print("   < CLAVE >");
lcd.setCursor(0,1);
lcd.print("*******_");
}
if(ilosc == 8)
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print("   < CLAVE >");
lcd.setCursor(0,1);
lcd.print("********");
}
 
if(ilosc == dlugosc)
{
delay(250);
checkPassword();
ilosc = 0;
}
}
}
 
void checkPassword()
{
  if (password.evaluate())
  {
int i;
for( i = 1; i <= 3; i++ )
{
  digitalWrite(buzzer, HIGH);  
  delay(120);            
  digitalWrite(buzzer, LOW);  
  delay(100);      
}    
   
    password.reset();
    
    Serial.println("Correcto");    
 
    digitalWrite(ledRed, LOW);
    digitalWrite(ledGreen, HIGH);
 
    lcd.clear();
    lcd.setCursor(0,1);
    lcd.print("<CLAVE CORRECTA>");    
 
    delay(2000);
    digitalWrite(ledGreen, LOW);
   // digitalWrite(ledRed, LOW);    
       
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("  *Bienvenido*");
    lcd.setCursor(0,1);
    lcd.print("INGRESE LA CLAVE");   
 
  }  
  else     // si es incorrecto
  {

    alarma();
    //ilosc = 0;  
    password.reset();
 
    Serial.println("Error");
 
    digitalWrite(ledGreen, LOW);
    digitalWrite(ledRed, HIGH);    
    delay (2000);
    digitalWrite(ledRed, LOW);  

          
    lcd.clear();
    lcd.setCursor(0,1);
    lcd.print("<CLAVE ERRONEA>");
    delay(2000);
   
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Intenta otra vez");
    lcd.setCursor(0,1);
    lcd.print("INGRESE LA CLAVE");    
  }

 
}


 void alarma() // metodo que se llama cuando la clave es erronea
{
  for(almacenador = frecuenciaMin; almacenador <= frecuenciaMax; almacenador++)
  {
    tone(buzzer,almacenador,duracion);
    
    
  }
   for(almacenador = frecuenciaMax; almacenador >= frecuenciaMin; almacenador--)
  {
    tone(buzzer,almacenador,duracion);
    
    
  }
}

Bueno nos vemos. Saludo Ditecno Digital


ElectroMercado

    0 Comentarios

    Contesta

    CONTACTANOS

    Esta es su red social de tecnología para compartir tus ideas y proyectos .Puedes enviarnos un correo si tienes dudas.Nos vemos

    Enviando

    Inicia Sesión con tu Usuario y Contraseña

    o    

    ¿Olvidó sus datos?

    Create Account