const int buttonPin = 2;
const int ledPin = 13;
unsigned long previousMillis = 0;
int buttonState = 0;
int lastButtonState = 0;
bool isStopwatchRunning = false;
unsigned long stopwatchStartTime = 0;
void setup() {
Serial.begin(9600);
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState != lastButtonState) {
if (buttonState == HIGH) {
if (isStopwatchRunning) {
isStopwatchRunning = false;
unsigned long elapsedMillis = millis() - stopwatchStartTime;
displayMillis(elapsedMillis);
} else {
isStopwatchRunning = true;
stopwatchStartTime = millis();
Serial.println("Stopwatch started.");
}
}
delay(50);
}
lastButtonState = buttonState;
if (isStopwatchRunning) {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= 1000) {
previousMillis = currentMillis;
displayStopwatch(currentMillis - stopwatchStartTime);
}
if ((currentMillis - stopwatchStartTime) >= 60000) {
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
// stopwatchStartTime = currentMillis;
}
}
}
void displayStopwatch(unsigned long elapsedMillis) {
int hours = elapsedMillis / 3600000;
int minutes = (elapsedMillis / 60000) % 60;
int seconds = (elapsedMillis / 1000) % 60;
Serial.print("Stopwatch: ");
Serial.print(hours);
Serial.print(":");
Serial.print(minutes);
Serial.print(":");
Serial.println(seconds);
}
void displayMillis(unsigned long elapsedMillis) {
Serial.print("Elapsed Millis: ");
Serial.println(elapsedMillis);
} //RIDHO MOHAMMAD AZRIL D400210120