const int ledPins[] = {2, 3, 4, 5};
const int button1Pin = 6;
const int button2Pin = 7;
int button1PressCount = 0;
unsigned long lastDebounceTime = 0;
const int debounceDelay = 50;
void setup() {
for (int i = 0; i < 4; i++) {
pinMode(ledPins[i], OUTPUT);
digitalWrite(ledPins[i], LOW);
}
pinMode(button1Pin, INPUT_PULLUP);
pinMode(button2Pin, INPUT_PULLUP);
}
void loop() {
int button1State = digitalRead(button1Pin);
int button2State = digitalRead(button2Pin);
if (button1State == LOW && button2State == LOW) {
delay(debounceDelay);
if (digitalRead(button1Pin) == LOW && digitalRead(button2Pin) == LOW) {
bool allLedsOn = true;
for (int i = 0; i < 4; i++) {
if (digitalRead(ledPins[i]) == LOW) {
allLedsOn = false;
break;
}
}
if (allLedsOn) {
for (int i = 0; i < 4; i++) {
digitalWrite(ledPins[i], LOW);
}
} else {
for (int i = 0; i < 4; i++) {
digitalWrite(ledPins[i], HIGH);
}
}
button1PressCount = 0;
while (digitalRead(button1Pin) == LOW || digitalRead(button2Pin) == LOW) {
delay(10);
}
return;
}
}
if (button1State == LOW && millis() - lastDebounceTime > debounceDelay) {
lastDebounceTime = millis();
button1PressCount++;
while (digitalRead(button1Pin) == LOW) {
delay(10);
}
if (button1PressCount == 3) {
digitalWrite(ledPins[2], HIGH);
digitalWrite(ledPins[3], LOW);
} else if (button1PressCount == 4) {
digitalWrite(ledPins[3], HIGH);
digitalWrite(ledPins[2], LOW);
button1PressCount = 0;
}
}
delay(10);
}