Go Down

Topic: ayuda con código lcd y teclado matricial 4x3 (Read 73 times) previous topic - next topic

Eltecnico

Hola buenas a todos, estoy haciendo un proyecto de una cerradura media clave con un teclado matricial de 4x3 con una lcd tengo un problema y no se como hacerlo. Al arrancar el arduino con el código te aparece la lcd vacía pero si metes el código 1234 aparecen los asteriscos, lo que quiero es que ponga arriba introduzca clave y abajo salgan los asteriscos, que se vallan centrando mientras que vas metiendo la clave. He intentado todo pero no lo consigo ayuda por favor.

Code: [Select]
[code]
#include <Password.h>
#include <Keypad.h>
#include <LiquidCrystal.h>
#include <Wire.h>
Password password = Password( "1234" );
int salida =10;
const byte ROWS = 4; //NUMERO DE FILAS
const byte COLS = 3; //NUMEROS DE COLUMNAS
// Define the Keymap
char keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'}
};

byte rowPins[ROWS] = {7,6,5,4};// PINES PARA LAS FILAS
byte colPins[COLS] = {3,2,11};// PINES PARA LAS COLUMNAS

LiquidCrystal lcd(8, 9, A2, A3, A4, A5);// PINES PARA LA LCD

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){
  pinMode(salida, OUTPUT);
  lcd.begin(16, 2);
  keypad.addEventListener(keypadEvent);
       }

void(* resetloop) (void) = 0; // RESETEA EL LOOP CUANDO LE LLAMA
void loop(){
  keypad.getKey();
}

void keypadEvent(KeypadEvent eKey){
  switch (keypad.getState()){
    case PRESSED:
          lcd.print("*");// AL PULSAR CUALQUIER TECLA MUESTA *
  switch (eKey){
  case '#': checkPassword(); // AL PRESIONAR # CONFIRMA LA CONTRASEÑA
          break;
  case '*': password.reset(); // AL PRESIONAR * BORRA LA CLAVE INTRODUCIDA
          lcd.clear(); break;
  default: password.append(eKey);
     }
  }
}

void checkPassword(){
  if (password.evaluate()){
    lcd.clear();              //MUESTRA EL MESAJE CLAVE CORRECTA, ACTIVA EL RELE Y REINICIA EL LOOP
    lcd.setCursor(5, 0);
    lcd.print("CLAVE");
    lcd.setCursor(4, 1);
    lcd.print("CORRECTA");
    delay(1500);
    digitalWrite(salida, HIGH);
    delay(2000);
    digitalWrite(salida, LOW);
    resetloop(); 
  }else{                     ////MUESTRA EL MESAJE DE CLAVE INCORRECTA Y REINICIA EL LOOP
    lcd.clear();
    lcd.setCursor(5, 0);
    lcd.print("CLAVE");
    lcd.setCursor(2, 1);
    lcd.print("INCORRECTA");
    delay(2000);
    resetloop();
    
  }
}

[/code]

Saludosssssss

max_saeta

Saludos
Este codigo es una version mas completa que lo que pretendes hacer, lo hice en mis inicios con Arduino asi que no la he probado desde entonces.


Usa:
Arduino UNO
Teclado 4x4
Pantalla LCD
Memoria 24C32

Eltecnico

Hola buenas, muchas gracias, ahora lo que quiero es limitar el numero de caracteres máximos que pueda meter en la lcd, por ejemplo 4 si yo he metido la clave 1234 que ya no me deje meter mas caracteres. Como se podría hacer?


Saludossss

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy