#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27,16,2);
#include <TimeLib.h>
const int btnForward = 2;
const int btnBack = 3;
unsigned long prevtime;
void setup()
{
Serial.begin(9600);
digitalWrite(btnForward, HIGH);
digitalWrite(btnBack, HIGH);
lcd.init();
lcd.backlight();
lcd.blink();
setTime(8,50,0,28,12,23);
}
void loop()
{
prevtime = now();
while( prevtime == now() )
{
if(checkSetTime())
prevtime = now();
}
digitalClockDisplayLcd();
delay(1000);
}
boolean checkSetTime()
{
int step;
boolean isTimeAdjusted = false;
step = 1;
while(digitalRead(btnForward)== LOW)
{
adjustTime(step);
isTimeAdjusted = true;
step = step + 1;
digitalClockDisplayLcd();
delay(100);
}
step = -1;
while(digitalRead(btnBack)== LOW)
{
adjustTime(step);
isTimeAdjusted = true;
step = step - 1;
digitalClockDisplayLcd();
delay(100);
}
return isTimeAdjusted;
}
void digitalClockDisplayLcd(){
lcd.setCursor(0,0);
lcd.print(hour());
printDigits(minute());
printDigits(second());
lcd.setCursor(0,1);
lcd.print(day());
lcd.print(" ");
lcd.print(month());
lcd.print(" ");
lcd.print(year());
}
void printDigits(int digits){
lcd.print(":");
if(digits < 10)
lcd.print('0');
lcd.print(digits);
}