#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd (0x27, 12, 6);
unsigned long mulai, selesai, dataStopWatch;
int i=0;
int fPaus = 0;
long lastButton = 0;
long delayAntiBouncing = 50;
long dataPaus = 0;
void setup(){
Serial.begin(9600);
lcd.init();
lcd.backlight();
delay(1000);
pinMode(A0,INPUT);
pinMode(A1,INPUT);
digitalWrite(A0,1);
digitalWrite(A1,1);
lcd.begin(16, 2);
lcd.setCursor(3,0);
lcd.print("WELCOME...");
delay(800);
lcd.clear();
delay(500);
lcd.setCursor(0,0);
lcd.print("Tuned By :");
lcd.setCursor(0,1);
lcd.print("RPM_378");
delay(1000);
lcd.clear();
delay(500);
lcd.setCursor(1, 0);
lcd.print("Tekan Tombol");
lcd.setCursor(1, 1);
lcd.print("Start / Stop");
for (i = 0 ; i < 16; i++)
{
lcd.scrollDisplayRight();
delay(200);
}
for (i = 1 ; i < 16; i++)
{
lcd.scrollDisplayLeft();
delay(200);
}
}
void loop(){
if (digitalRead(A0)==0){
if ((millis() - lastButton) > delayAntiBouncing){
if (i==0){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Start Timer");
mulai = millis();
fPaus = 0;
}
else if (i==1){
lcd.setCursor(0, 0);
lcd.print("Stop Timer ");
dataPaus = dataStopWatch;
fPaus = 1;
}
i =!i;
}
lastButton = millis();
}
else if (digitalRead(A1)==0 && fPaus == 1){
dataStopWatch = 0;
dataPaus = 0;
lcd.clear();
lcd.print("Reset Stopwatch");
lcd.setCursor(0, 1);
lcd.print("0:0:0.0");
delay(2000);
lcd.clear();
lcd.print(" Tekan Tombol");
lcd.setCursor(0, 1);
lcd.print(" Start / Stop");
}
if (i==1){
selesai = millis();
float jam, menit, detik, miliDetik;
unsigned long over;
// MATH time!!!
dataStopWatch = selesai - mulai;
dataStopWatch = dataPaus + dataStopWatch;
jam = int(dataStopWatch / 360000);
over = dataStopWatch % 360000;
menit = int(over / 60000);
over = over % 60000;
detik = int(over / 1000);
miliDetik = over % 1000;
lcd.setCursor(0, 1);
lcd.print(jam, 0);
lcd.print(":");
lcd.print(menit, 0);
lcd.print(":");
lcd.print(detik, 0);
lcd.print(".");
if (jam < 10){
lcd.print(miliDetik, 0);
lcd.print(" ");
}
}
}