//El botón de inicio es el verde. Si se quiere parar pero no reiniciar, también el verde. Si se quiere parar Y reiniciar, el rojo.
#include <TM1637TinyDisplay.h>
#define CLK 2
#define DIO 3
#define START_STOP_BUTTON 4
#define RESET_BUTTON 5
TM1637TinyDisplay display(CLK, DIO);
unsigned long previousMillis = 0;
unsigned long interval = 1000;
int seconds = 0;
int minutes = 0;
bool running = false;
bool lastStartStopButtonState = HIGH;
bool lastResetButtonState = HIGH;
void setup() {
display.setBrightness(7);
display.showString("0000");
pinMode(START_STOP_BUTTON, INPUT_PULLUP);
pinMode(RESET_BUTTON, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
bool startStopButtonState = digitalRead(START_STOP_BUTTON);
if (startStopButtonState == LOW && lastStartStopButtonState == HIGH) {
running = !running;
}
lastStartStopButtonState = startStopButtonState;
bool resetButtonState = digitalRead(RESET_BUTTON);
if (resetButtonState == LOW && lastResetButtonState == HIGH) {
running = false;
seconds = 0;
minutes = 0;
display.showString("0000"); // Display 00:00
}
lastResetButtonState = resetButtonState;
if (running) {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
seconds++;
if (seconds >= 60) {
seconds = 0;
minutes++;
if (minutes >= 60) {
minutes = 0;
}
}
char timeString[5];
sprintf(timeString, "%02d%02d", minutes, seconds);
display.showString(timeString);
}
}
}