//Haga un sistema de clave similar al de CHEVISTAR, esto es utilizando 3
//pulsadores, un led rojo y un led verde, si la clave 1223 es presionada
//correctamente activa el led verde, caso contrario se enciende el led rojo
//por 2 segundos indicando que falló la clave, después de 3 intentos fallidos,
//el sistema debe bloquearse por 1 minuto, transcurrido ese tiempo puede volver
//a intentar nuevamente.
int btn1 = 5;
int btn2 = 4;
int btn3 = 3;
int led1 = 10;
int led2 = 11;
int clave[4] = {1,2,2,3};
int indiceClave = 0;
int claveIntroducida[4];
unsigned long tiempoBlock = 0;
int intentosError = 0;
bool bloqueo = false;
void setup() {
// put your setup code here, to run once:
pinMode(btn1, INPUT);
pinMode(btn2, INPUT);
pinMode(btn3, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
if(bloqueo){
if(millis() - tiempoBlock >= 60000){
bloqueo = false;
intentosError = 0;
Serial.println("Sistema desbloqueado.");
}
return;
}
if(digitalRead(btn1) == HIGH){
claveIntroducida[indiceClave] = 1;
indiceClave++;
delay(300);
}
if(digitalRead(btn2) == HIGH){
claveIntroducida[indiceClave] = 2;
indiceClave++;
delay(300);
}
if(digitalRead(btn3) == HIGH){
claveIntroducida[indiceClave]= 3;
indiceClave++;
delay(300);
}
if(indiceClave == 4){
if(claveCorrecta()){
digitalWrite(led1,HIGH);
digitalWrite(led2, LOW);
Serial.println("Clave correcta.");
delay(2000);
digitalWrite(led1, LOW);
indiceClave = 0;
}else{
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
Serial.println("Clave incorrecta.");
delay(2000);
digitalWrite(led2, LOW);
intentosError++;
indiceClave = 0;
if(intentosError >= 3){
bloqueo = true;
tiempoBlock = millis();
Serial.println("Sistema bloqueado por 1 minuto.");
}
indiceClave = 0;
}
}
}
bool claveCorrecta(){
for(int i = 0; i < 4; i++) {
if(claveIntroducida[i] != clave[i]){
return false;
}
}
return true;
}