#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);
}








GND5VSDASCLSQWRTCDS1307+