#include "RTClib.h"
RTC_DS1307 rtc;
const int COLON_PIN = 13;
const int SPEAKER_PIN = A3;
const int dataPin = 2; //DS
const int clockPin = 3; //SHCP
const int latchPin = 4; //STCP
const byte digiPatterns[10]={
B00111111, // 0
B00000110, // 1
B01011011, // 2
B01001111, // 3
B01100110, // 4
B01101101, // 5
B01111101, // 6
B00000111, // 7
B01111111, // 8
B01101111 // 9
};
void setup() {
Serial.begin(115200);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();
}
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
}
void loop() {
// Date
for (int i = 0; i < 3; i++) {
DateTime now = rtc.now();
showTimeAndDate ();
digitalWrite(latchPin, LOW);
shiftOut(dataPin,clockPin,MSBFIRST,~digiPatterns[( now.year() + 543 ) % 10]);
shiftOut(dataPin,clockPin,MSBFIRST,~digiPatterns[(( now.year() + 543 ) / 10) %10 ]);
shiftOut(dataPin,clockPin,MSBFIRST,~digiPatterns[now.month() % 10]);
shiftOut(dataPin,clockPin,MSBFIRST,~digiPatterns[now.month() / 10]);
shiftOut(dataPin,clockPin,MSBFIRST,~digiPatterns[now.day() % 10]);
shiftOut(dataPin,clockPin,MSBFIRST,~digiPatterns[now.day() / 10]);
digitalWrite(latchPin,HIGH);
delay(1000);
}
// Time
for (int i = 0; i < 3; i++) {
DateTime timeNow = rtc.now();
showTimeAndDate ();
digitalWrite(latchPin, LOW);
shiftOut(dataPin,clockPin,MSBFIRST,~digiPatterns[timeNow.second() % 10]);
shiftOut(dataPin,clockPin,MSBFIRST,~digiPatterns[timeNow.second() / 10]);
shiftOut(dataPin,clockPin,MSBFIRST,~digiPatterns[timeNow.minute() % 10]);
shiftOut(dataPin,clockPin,MSBFIRST,~digiPatterns[timeNow.minute() / 10]);
shiftOut(dataPin,clockPin,MSBFIRST,~digiPatterns[timeNow.hour() % 10]);
shiftOut(dataPin,clockPin,MSBFIRST,~digiPatterns[timeNow.hour() / 10]);
digitalWrite(latchPin,HIGH);
delay(1000);
}
}
void showTimeAndDate () {
DateTime now = rtc.now();
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.print(" Day : ");
Serial.print( now.day() );
Serial.print(" Month : ");
Serial.print( now.month() );
Serial.print(" Year : ");
Serial.print( now.year() + 543 );
Serial.println("");
}