#include <LiquidCrystal_I2C_Hangul.h>
LiquidCrystal_I2C_Hangul lcd(0x27, 16, 2);
unsigned long waktuAwal, waktuSekarang, dataStopwatch;
bool hitung = false;
void setup() {
// Inisialisasi pin tombol sebagai input
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(6, OUTPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(2,0);
lcd.print("Tekan Tombol");
lcd.setCursor(5,1);
lcd.print("START");
}
void loop() {
// Baca status tombol
if(digitalRead(2)==0){
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" READY ! ");
delay(5000);
waktuAwal = millis();
hitung = true;
digitalWrite(6, HIGH);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" PUKUL ! ");
}
else if(digitalRead(5)==0){
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" READY ! ");
waktuAwal = millis();
hitung = true;
digitalWrite(6, HIGH);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" PUKUL ! ");
}
else if(digitalRead(3)==0){
hitung = false;
digitalWrite(6, LOW);
lcd.setCursor(2,0);
lcd.print(" TIMER STOP ");
}
else if(digitalRead(4)==0){
hitung = false;
lcd.setCursor(0,0);
lcd.print ("Reset Stopwatch");
lcd.setCursor(0,3);
lcd.print(" 0:0:0:0 ");
delay(1000);
lcd.clear();
lcd.setCursor(2,0);
lcd.print("Tekan Tombol");
lcd.setCursor(5,1);
lcd.print("START");
}
if (hitung){
waktuSekarang = millis();
dataStopwatch = waktuSekarang - waktuAwal;
float jam, menit, detik, milidetik;
unsigned long over;
jam = int(dataStopwatch / 3600000);
over = dataStopwatch % 3600000;
menit =int(over / 60000);
over = over % 60000;
detik = int(over / 1000);
milidetik = over % 1000;
lcd.setCursor(2, 1);
lcd.print(jam,0);
lcd.print(" :");
lcd.print(menit,0);
lcd.print(" :");
lcd.print(detik,0);
lcd.print(" :");
lcd.print(milidetik,0);
lcd.print(" ");
}
}