#include <LiquidCrystal.h>
#include <RTClib.h>
LiquidCrystal lcd(12,11,10,9,8,7); //RS,E,D4,D5,D6,D7
RTC_DS1307 rtc;
int btnSec = A0;
int btnMin = A1;
int btnHour = A2;
int mSec = 0;
int mMin = 0;
int mHour = 0;
void setup() {
lcd.begin(16, 2);
rtc.begin();
pinMode(btnSec, INPUT_PULLUP);
pinMode(btnMin, INPUT_PULLUP);
pinMode(btnHour, INPUT_PULLUP);
}
void loop() {
if(digitalRead(btnHour)== LOW){
mHour++;
if(mHour >= 24) mHour = 0;
}
if(digitalRead(btnMin)== LOW){
mMin++;
if(mMin >= 60) mMin = 0;
}
if(digitalRead(btnSec)== LOW){
mSec++;
if(mSec >= 60) mSec = 0;
}
textPrint(mSec,mMin,mHour);
delay(100);
}
void textPrint(int x, int y, int z){
lcd.clear();
char str[8];
sprintf(str,"%02d:%02d:%02d",z,y,x);
lcd.setCursor(7,1);
lcd.print(str);
ura();
}
void ura(){
static int alarm = 0;
DateTime now = rtc.now();
int ure = now.hour();
int minute = now.minute();
int sekunde = now.second();
char ura[14];
sprintf( ura,"%02d:%02d:%02d",ure,minute,sekunde);
lcd.setCursor(7,0);
lcd.print(ura);
if(sekunde == mSec && minute == mMin && ure == mHour){
alarm = HIGH;
}
else(alarm && (sekunde > (mSec + 15))) alarm = LOW;
digitalWrite(13,alarm);
}