Documente Academic
Documente Profesional
Documente Cultură
h>
int NUM_KEYS = 5;
int x=0; /// variable que se utiliza para llevar la posicion x en la matriz de la
pantalla
char caracterActual = '0'; // char que se utilizar� para recibir cada caracter
que se ingresa con los botones
int conta=0; // Index para llevar el control cuando compara la contrasena vieja
con la insertada en ese momento
int m =0; // Contador para llevar las comparaciones en Login
int t = 0; // Contador para llevar el total de intentos del Login
int conta2= 0; // Index para llevar el control cuando compara la contrasena vieja
con la insertada en ese momento en la parte de Digitar Vieja contrasenna
int m2 = 0; // Contador para llevar las comparaciones en Digitar Vieja contrasenna
int t2= 0; // Contador para llevar el total de intentos en Digitar Vieja
contrasenna
void setup()
{
lcd.clear();
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("Contrasena");
time = millis(); // variable para llevas un timer
}
void loop()
{
Login();
void Login(){
char c = caracterActual;
if(c==contrasena[conta2]){
m2++;
}
else{
m2--;
}
conta2++;
x++;
if (x>15) x=15;
caracterActual='0';
}
String c = String(caracterActual);
nuevaContra= nuevaContra+c;
//conta3++;
x++;
if (x>15) x=15;
caracterActual='0';
}
lcd.clear();
if(m==tam){
lcd.setCursor(4,1);
lcd.print("CORRECTO");
digitalWrite(12, HIGH); // enciende el led verde, indicando que
la puerta se ha abierto
delay(2000); // se espera por 2 segundos
digitalWrite(12, LOW); // apaga la luz
limpiar(); // limpia todos los contadores que se
utilizan para llevar la posicion actual,entre otros.
setup();
}
else{
lcd.setCursor(4,1);
lcd.print("INCORRECTO");
digitalWrite(13, HIGH); // enciente el led rojo,indicando que se
ha ingresado una contrasenna erronea
delay(2000); // se espera por 2 segundos
if(t==2){
for(int i=0; i<10; i++){ // for que se utiliza para encender
el led rojo intervitentemente
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
}
}
else{
lcd.clear();
t++;
conta=0;
x=0;
m=0;
caracterActual = '0';
setup();
}
}
}
if(m2==tam){
lcd.setCursor(0,0);
x=0;
lcd.clear();
lcd.print("Nueva Contra");
estado=2; /// se cambia el estado a
2,indicando que ahora esta digitando nueva contrasenna
}
else{
lcd.setCursor(3,1);
lcd.print("Incorrecta");
digitalWrite(13, HIGH); // enciente el led rojo
delay(2000); // se espera por 2 segundos
if(t2==2){
for(int i=0; i<10; i++){
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
}
}
else{
lcd.clear();
t2++;
conta2=0;
x=0;
m=0;
caracterActual = '0';
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Vieja Contra");
}
}
lcd.clear();
lcd.print("Cambio Exitoso");
contrasena =nuevaContra;
delay(2000);
lcd.clear();
limpiar();
setup();
}
}
delay(100);
}