#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define button 6
#define greenled 8
#define redled 9
unsigned long startTime = 0;
unsigned long elapsedTime = 0;
bool counting = false;
void setup() {
lcd.init();
lcd.backlight();
pinMode(greenled, OUTPUT);
pinMode(redled, OUTPUT);
pinMode(button, INPUT_PULLUP);
lcd.setCursor(0, 0);
lcd.print(" STOPWATCH ");
lcd.setCursor(0, 1);
lcd.print(" second's ");
}
void loop() {
if (digitalRead(button) == LOW) {
counting = !counting;
if (counting) {
startTime = millis();
digitalWrite(greenled, HIGH);
digitalWrite(redled, LOW);
}
else {
elapsedTime = millis() - startTime;
digitalWrite(greenled, LOW);
digitalWrite(redled, HIGH);
}
while (digitalRead(button) == LOW) {}
}
if (counting) {
elapsedTime = millis() - startTime;
lcd.setCursor(0, 1);
lcd.print(elapsedTime / 1000);
lcd.print(".");
lcd.print(elapsedTime % 1000 / 100);
}
else {
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(elapsedTime / 1000);
lcd.print(".");
lcd.print(elapsedTime % 1000 / 100);
}
}