const int togglePin = 6;
const int outputPin9 = 9;
const int outputPin10 = 10;
bool lastButtonState = LOW;
unsigned long timerStart = 0;
bool pin9Waiting = false;
bool pin9Active = false;
bool pin10Active = false;
void setup() {
pinMode(togglePin, INPUT);
pinMode(outputPin9, OUTPUT);
pinMode(outputPin10, OUTPUT);
digitalWrite(outputPin9, LOW);
digitalWrite(outputPin10, LOW);
}
void loop() {
bool buttonState = digitalRead(togglePin);
unsigned long currentMillis = millis();
// Check for button state change
if (buttonState != lastButtonState) {
lastButtonState = buttonState;
if (buttonState == HIGH) {
timerStart = currentMillis;
pin9Waiting = true; // Start 10-second wait
pin9Active = false;
digitalWrite(outputPin9, LOW);
digitalWrite(outputPin10, LOW); // Ensure pin 10 is LOW
} else {
timerStart = currentMillis;
digitalWrite(outputPin9, LOW); // Ensure pin 9 is LOW
digitalWrite(outputPin10, HIGH);
pin10Active = true;
pin9Waiting = false;
pin9Active = false;
}
}
// After 10-second wait, activate pin 9 for 30 seconds
if (pin9Waiting && currentMillis - timerStart >= 1000) {
digitalWrite(outputPin9, HIGH);
timerStart = currentMillis; // Reset timer for 30 sec count
pin9Waiting = false;
pin9Active = true;
}
// Turn off output after 30 seconds
if (pin9Active && currentMillis - timerStart >= 2000) {
digitalWrite(outputPin9, LOW);
pin9Active = false;
}
if (pin10Active && currentMillis - timerStart >= 2000) {
digitalWrite(outputPin10, LOW);
pin10Active = false;
}
}