const int blinkLedPin = 13;
const int statusLedPin = 12;
int failCount = 0;
float voltage = 10.5;
unsigned long attemptStart = 0;
unsigned long lastBlink = 0;
bool alwaysValid = true;
bool done = false;
void setup() {
pinMode(blinkLedPin, OUTPUT);
pinMode(statusLedPin, OUTPUT);
Serial.begin(9600);
attemptStart = millis();
}
void loop() {
if (done) return;
unsigned long now = millis();
// Blink indicator LED
if (now - lastBlink >= 400) {
digitalWrite(blinkLedPin, !digitalRead(blinkLedPin));
lastBlink = now;
}
// Check voltage validity during 5s window
if (now - attemptStart < 5000) {
if (voltage < 12.0 || voltage > 14.0) alwaysValid = false;
} else {
if (alwaysValid) {
Serial.println("Voltage stable for 5 seconds. Status LED ON.");
digitalWrite(blinkLedPin, LOW);
digitalWrite(statusLedPin, HIGH);
failCount = 0;
done = true;
} else {
failCount++;
Serial.print("Failed attempt #");
Serial.println(failCount);
if (failCount >= 3) {
Serial.println("Please contact mechanic.");
done = true;
} else {
attemptStart = now;
alwaysValid = true;
}
}
}
}