Created
September 16, 2017 16:44
-
-
Save thomasvt1/056aa4e69e259fb7eec9d7e257c99f1f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Date and time functions using a DS3231 RTC connected via I2C and Wire lib | |
#include <Wire.h> | |
#include "RTClib.h" | |
RTC_DS3231 rtc; | |
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; | |
void setup () { | |
#ifndef ESP8266 | |
while (!Serial); // for Leonardo/Micro/Zero | |
#endif | |
Serial.begin(9600); | |
//delay(3000); // wait for console opening | |
if (! rtc.begin()) { | |
Serial.println("Couldn't find RTC"); | |
while (1); | |
} | |
DateTime compile = DateTime(F(__DATE__), F(__TIME__)); | |
DateTime set (compile + TimeSpan(0,0,0,6) - TimeSpan(0,2,0,0)); //+6 seconds minus 2 hours (GMT) | |
rtc.adjust(set); | |
if (rtc.lostPower()) { | |
Serial.println("RTC lost power, lets set the time!"); | |
// following line sets the RTC to the date & time this sketch was compiled | |
//rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); | |
DateTime compile = DateTime(F(__DATE__), F(__TIME__)); | |
//DateTime toGMT = TimeSpan(0,2,0,0); | |
//DateTime fix = TimeSpan(0,0,0,7); | |
DateTime set (compile + TimeSpan(0,0,0,6) - TimeSpan(0,2,0,0)); //+7 seconds minus 2 hours (GMT) | |
rtc.adjust(set); | |
//Serial.print(future.second(), DEC); | |
// This line sets the RTC with an explicit date & time, for example to set | |
// January 21, 2014 at 3am you would call: | |
// rtc.adjust(DateTime(2017, 9, 16, 17, 42, 0)); | |
} | |
} | |
void loop () { | |
DateTime now = rtc.now(); | |
Serial.print(now.year(), DEC); | |
Serial.print('/'); | |
Serial.print(now.month(), DEC); | |
Serial.print('/'); | |
Serial.print(now.day(), DEC); | |
Serial.print(" ("); | |
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]); | |
Serial.print(") "); | |
Serial.print(now.hour(), DEC); | |
Serial.print(':'); | |
Serial.print(now.minute(), DEC); | |
Serial.print(':'); | |
Serial.print(now.second(), DEC); | |
Serial.println(); | |
Serial.print("Since midnight 1/1/1970 = "); | |
Serial.print(now.unixtime()); | |
Serial.print(" s = "); | |
Serial.print(now.unixtime() / 86400L); | |
Serial.println("d"); | |
// calculate a date which is 7 days and 30 seconds into the future | |
//DateTime future (now + TimeSpan(7,12,30,6)); | |
Serial.println(); | |
delay(3000); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment