int LV = 4 ; // pin para led
int p1 = 22 ;
int p2 = 34;
int p3 = 35 ; // pin para pulsador
int p4 = 5 ;
int valor = 0;
int v2 = 0;
int v3 = 0;
int F = 0; // Contador de fallos
void setup() {
Serial.begin(9600);
pinMode(LV, OUTPUT);
pinMode(p1, INPUT);
pinMode(p2, INPUT);
pinMode(p3, INPUT);
pinMode(p4, INPUT);
}
void loop() {
Serial.println("INICIO");
while (F < 3) {
yield(); // Evita el WDT Reset
if (digitalRead(p2) == HIGH && v2 == 0) {
valor = 15;
delay(50);
Serial.println("¡Vamos, tú puedes!");
}
if (digitalRead(p1) == HIGH && digitalRead(p2) == LOW) {
v2 = 16;
delay(50);
Serial.println("¡Ya casi lo tienes!");
}
if (digitalRead(p3) == HIGH && (v2 + valor == 31) && digitalRead(p1) == LOW) {
v3 = 5;
delay(50);
Serial.println("¡Dale al rojo, al rojo!");
}
if (digitalRead(p4) == HIGH && v3 == 5) {
digitalWrite(LV, HIGH);
unsigned long tiempoInicio = millis(); // Guardar tiempo actual
while (millis() - tiempoInicio < 5000) { // Esperar 5 segundos sin bloquear
yield(); // Evita el reset
}
digitalWrite(LV, LOW);
valor = 0;
v2 = 0;
v3 = 0;
F = 0;
}
if (digitalRead(p4) == HIGH && v3 == 0) {
valor = 0;
v2 = 0;
v3 = 0;
Serial.println("Todo a 0 por fallo en p4");
F++;
Serial.println(F);
Serial.println("Llevas un fallo");
delay(500);
}
}
while (1) {
Serial.println("Fallo en el sistema, necesario reseteo de programa");
delay(3000);
}
}