#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <time.h>
#include "RTClib.h"
RTC_DS1307 rtc;
char daysOfTheWeek[7][12] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
uint32_t UTIL_GetBeginningOfWeekEpoch(DateTime now)
{
uint32_t beginning_of_week_epoch = now.unixtime();
beginning_of_week_epoch -= (uint32_t)now.second();
beginning_of_week_epoch -= ((uint32_t)now.minute() * 60);
beginning_of_week_epoch -= ((uint32_t)now.hour() * 60 * 60);
beginning_of_week_epoch -= ((uint32_t)now.dayOfTheWeek() * 60 * 60 * 24);
return beginning_of_week_epoch;
}
void setup ()
{
Serial.begin(9600);
if (! rtc.begin())
{
Serial.print("Couldn't find RTC");
while (1);
}
if (! rtc.isrunning())
{
Serial.print("RTC is NOT running!");
Serial.println();
}
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
//rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
void loop ()
{
DateTime now = rtc.now();
if(now.hour()<=9)
{
Serial.print("0");
Serial.print(now.hour());
}
else {
Serial.print(now.hour());
}
Serial.print(':');
if(now.minute()<=9)
{
Serial.print("0");
Serial.print(now.minute());
}
else {
Serial.print(now.minute());
}
Serial.print(':');
if(now.second()<=9)
{
Serial.print("0");
Serial.print(now.second());
}
else {
Serial.print(now.second());
}
Serial.println();
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(",");
if(now.day()<=9)
{
Serial.print("0");
Serial.print(now.day());
}
else {
Serial.print(now.day());
}
Serial.print('/');
if(now.month()<=9)
{
Serial.print("0");
Serial.print(now.month());
}
else {
Serial.print(now.month());
}
Serial.print('/');
if(now.year()<=9)
{
Serial.print("0");
Serial.print(now.year());
}
else {
Serial.print(now.year());
}
Serial.println();
uint32_t crt_week_epoch = UTIL_GetBeginningOfWeekEpoch(now); //Change to the beginning of the week
Serial.print("Week begin: "); Serial.println(crt_week_epoch);
delay(1000);
}