#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
#define playPause 4
#define stopReset 5
int statusplayPause;
int statusstopReset;
String statstatplayPauseText = "OFF";
int miliDetik=0;
int detik=0;
int menit=0;
int jam=0;
void setup() {
lcd.init();
lcd.backlight();
pinMode(playPause, INPUT_PULLUP);
pinMode(stopReset, INPUT_PULLUP);
//memanggil function stopwatchInit()
stopwatchInit();
Serial.begin(115200);
}
void loop() {
statusplayPause = digitalRead(playPause);
statusstopReset = digitalRead(stopReset);
if (statusstopReset==LOW ) {
stopwatchInit();
stopwatchStopreset();
}
if (statusplayPause==LOW ){
if (statstatplayPauseText=="OFF"){
statstatplayPauseText="ON ";
} else if (statstatplayPauseText=="ON "){
statstatplayPauseText="OFF";
}
lcd.setCursor(13,0);
lcd.println(statstatplayPauseText);
delay(200);
}
//cek status ON
if(statstatplayPauseText=="ON "){
stopwatchOn();
}
}
void stopwatchInit() {
lcd.setCursor(0,0);
lcd.println("STOP WATCH : OFF");
lcd.setCursor(2,1);
lcd.println("00:00:00:00");
}
void stopwatchStopReset(){
statstatplayPauseText="OFF";
int miliDetik=0;
int detik=0;
int menit=0;
int jam=0;
stopwatchInit();
}
void stopwatchOn() {
miliDetik++;
if(miliDetik>10){
miliDetik=0;
detik++;
}
lcd.setCursor(11,1);
if(miliDetik<10){
lcd.print("0");
}
lcd.print(miliDetik);
if(detik>3){
detik=0;
menit++;
}
lcd.setCursor(8,1);
if(detik<10){
lcd.print("0");
}
lcd.print(detik);
if(menit>3){
menit=0;
jam++;
}
lcd.setCursor(5,1);
if(menit<10){
lcd.print("0");
}
lcd.print(menit);
if(menit>3){
jam=0;
}
lcd.setCursor(2,1);
if(jam<10){
lcd.print("0");
lcd.print(jam);
delay(100);
}}
void stopwatchStopreset(){
statstatplayPauseText="OFF";
miliDetik=0;
detik=0;
menit=0;
jam=0;
}