int red1 = 5;
int yellow1 = 6;
int green1 = 7;
int red2 = 2;
int yellow2 = 3;
int green2 = 4;
int buttonPin = 10;
bool lightsPaused = false;
unsigned long lastButtonPress = 0;
unsigned long debounceDelay = 50;
#include <TM1637Display.h>
#define TEST_DELAY 2000
TM1637Display display1(9, 8);
TM1637Display display2(A0, A1);
void setup() {
display1.clear();
display1.setBrightness(7);
display2.clear();
display2.setBrightness(7);
for (int i = 2; i < 10; i++) {
pinMode(i, OUTPUT);
}
pinMode(buttonPin, INPUT_PULLUP);
}
void loop() {
int buttonState = digitalRead(buttonPin);
if (buttonState == LOW && (millis() - lastButtonPress) > debounceDelay)
{
lastButtonPress = millis();
lightsPaused = !lightsPaused;
if (lightsPaused) {
digitalWrite(red1, LOW);
digitalWrite(yellow1, LOW);
digitalWrite(green1, LOW);
digitalWrite(red2, LOW);
digitalWrite(yellow2, LOW);
digitalWrite(green2, LOW);
}
}
if (!lightsPaused) {
for (int i = 15; i >= 0; i -= 1) {
int j = i - 3;
digitalWrite(green1, LOW);
digitalWrite(yellow1, LOW);
digitalWrite(red1, HIGH);
display1.showNumberDec(i, true, 2, 2);
if (i >= 4) {
digitalWrite(green2, HIGH);
digitalWrite(yellow2, LOW);
digitalWrite(red2, LOW);
display2.showNumberDec(j, true, 2, 2);
} else {
digitalWrite(green2, LOW);
digitalWrite(yellow2, HIGH);
digitalWrite(red2, LOW);
display2.showNumberDec(i, true, 2, 2);
}
delay(1000);
}
for (int i = 15; i >= 0; i -= 1) {
int j = i - 3;
digitalWrite(green2, LOW);
digitalWrite(yellow2, LOW);
digitalWrite(red2, HIGH);
display2.showNumberDec(i, true, 2, 2);
if (i >= 4) {
digitalWrite(green1, HIGH);
digitalWrite(yellow1, LOW);
digitalWrite(red1, LOW);
display1.showNumberDec(j, true, 2, 2);
} else {
digitalWrite(green1, LOW);
digitalWrite(yellow1, HIGH);
digitalWrite(red1, LOW);
display1.showNumberDec(i, true, 2, 2);
}
delay(1000);
}
}
}