#include <TimerOne.h>
#include <LiquidCrystal_I2C.h>
typedef struct
{
unsigned char time;
unsigned char second;
unsigned char minute;
unsigned char hour;
}DATETIME_STR;
LiquidCrystal_I2C lcd(0x27,16,2);
DATETIME_STR dateTime;
void setup() {
lcd.init();
lcd.backlight();
Timer1.initialize(1000000);
Timer1.attachInterrupt(timerCallback);
Timer1.start();
dateTime.hour = 12;
dateTime.minute = 0;
dateTime.second = 23;
// put your setup code here, to run once:
}
void loop() {
if(dateTime.time)
dateTime.time = showDateTime();
// put your main code here, to run repeatedly:
}
void timerCallback(void)
{
dateTime.time = 1;
if(++dateTime.second >= 60)
{
dateTime.second = 0;
if(++dateTime.minute >= 60)
{
dateTime.minute = 0;
if(++dateTime.hour >= 24)
{
dateTime.hour = 0;
}
}
}
}
unsigned int showDateTime(void)
{
char time[16];
lcd.setCursor(0,0);
sprintf(time,"time: %02d:%02d:%02d",dateTime.hour,dateTime.minute,dateTime.second);
lcd.print(time);
return 0;
}