#include <Wire.h>
#include <DS1307RTC.h>
//#include <TimeLib.h> //cai// a basic DS1307 library that returns time as a time_t //cai
#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11 , 7, 6, 5, 4);
#define tangphut A0
#define giamphut A3
unsigned long Hour;
unsigned long Minute;
int tam=1;
int tam1=1;
tmElements_t tm;
void chinhphut()
{
if(digitalRead(tangphut)==LOW&& tam==1)
{
delay(20);
if(digitalRead(tangphut)==LOW&& tam==1)
{
tm.Minute++;
tam=0;
tm.Second=0; //set giay ban dau
RTC.write(tm); //ham chinh thoi gian
}
}
if(digitalRead(tangphut)==HIGH && tam==0 ) {tam=1;}
//////////////////////////////////////////////////////
if(digitalRead(giamphut)==LOW&& tam1==1)
{
delay(20);
if(digitalRead(giamphut)==LOW&& tam1==1)
{
tm.Minute--;
tam1=0;
tm.Second=0; //set giay ban dau
RTC.write(tm); //ham chinh thoi gian
}
}
if(digitalRead(giamphut)==HIGH && tam1==0 ) {tam1=1;}
}
void setup()
{
lcd.begin(16, 2);
pinMode(tangphut, INPUT_PULLUP); //khai bao nutnhan
pinMode(giamphut, INPUT_PULLUP);
}
void loop()
{
digitalClockDisplay();
if (RTC.read(tm)) //doc gia trị hms tu ds
{
Hour = tm.Hour;
Minute = tm.Minute;
if (tm.Hour == 13) Hour = 1;
if (tm.Hour == 14) Hour = 2;
if (tm.Hour == 15) Hour = 3;
if (tm.Hour == 16) Hour = 4;
if (tm.Hour == 17) Hour = 5;
if (tm.Hour == 18) Hour = 6;
if (tm.Hour == 19) Hour = 7;
if (tm.Hour == 20) Hour = 8;
if (tm.Hour == 21) Hour = 9;
if (tm.Hour == 22) Hour = 10;
if (tm.Hour == 23) Hour = 11;
if (tm.Hour == 0) Hour = 12;
chinhphut();
}
}
void digitalClockDisplay()
{
lcd.setCursor(4, 0); // Set LCD cursor position (column, row)
lcd.print(tm.Hour);
lcd.setCursor(7, 1);
lcd.print(tm.Minute/10%10);
lcd.print(tm.Minute%10);
lcd.setCursor(10, 1);
lcd.print(tm.Second/10%10);
lcd.print(tm.Second%10);
}