#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define b1 2
#define b2 3
#define b3 4
//vARIABEL WAKTU SAAT INI
int currentHour = 0;
int currentMinute = 0;
int currentSecond =0;
//variabel waktu alarm
int alarmHour = 0;
int alarmMinute = 0;
// enumeric = enum
enum MenuMode
{
Display_time,
Set_alarm_hour,
Set_alarm_min,
};
MenuMode menuMode = Display_time;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
// put your setup code here, to run once:
Wire.begin();
pinMode(b1, INPUT_PULLUP);
pinMode(b2, INPUT_PULLUP);
pinMode(b3, INPUT_PULLUP);
lcd.init();
lcd.backlight();
lcd.clear();
}
void loop() {
// put your main code here, to run repeatedly:
currentHour = 12;
currentMinute = 30;
currentSecond = 15;
switch(menuMode)
{
case Display_time:
//lcd.clear();
lcd.setCursor(0, 0);
lcd.print("***Time:");
lcd.print(currentHour);
lcd.print(":");
if (currentMinute < 10){
lcd.print("0");
}
lcd.print(currentMinute);
lcd.print(":");
if (currentSecond < 10){
lcd.print("0");
}
lcd.print(currentSecond);
if(digitalRead(b3) == LOW){
menuMode = Set_alarm_hour;
delay(500);
}
break;
case Set_alarm_hour:
lcd.setCursor(0, 0);
lcd.print("Set Alarm - Hour");
lcd.setCursor(0, 1);
lcd.print("Alarm:");
lcd.print(alarmHour);
lcd.setCursor(8, 1);
lcd.print(":");
if(alarmMinute < 10)
{
lcd.print("0");
}
if(digitalRead(b2) == LOW ){
alarmHour++;
if(alarmHour > 23){
alarmHour = 0;
}
delay(50);
}
if (digitalRead(b1) == LOW){
alarmHour--;
if(alarmHour < 0){
alarmHour= 23;
}
delay(50);
}
if(digitalRead(b3) == LOW){
menuMode = Set_alarm_min;
delay(500);
}
break;
case Set_alarm_min:
lcd.setCursor(0, 0);
lcd.print("Set Alarm-minute");
lcd.setCursor(0, 1);
lcd.print("Alarm:");
//lcd.setCursor(7, 1);
lcd.print(alarmHour);
lcd.setCursor(8, 1);
lcd.print(":");
lcd.print(alarmMinute);
if(digitalRead(b2) == LOW ){
alarmMinute++;
if(alarmMinute > 59){
alarmMinute =0;
}
delay(50);
}
if (digitalRead(b1) == LOW) {
alarmMinute--;
if(alarmMinute < 0){
alarmMinute =59;
}
delay(50);
}
if(digitalRead(b3) == LOW){
menuMode = Display_time;
delay(500);
}
break;
}
}