Arduino: RTC DS3231 Unix Time
Jump to navigation
Jump to search
Code
// DS3231_UnixTime (C)2014 Henning Karlsen // web: http://electronics.henningkarlsen.com/ // // A quick demo of how to use my DS3231-library to // convert date and time to UnixTime // // To use the hardware I2C (TWI) interface of the Arduino you must connect // the pins as follows: // // Arduino Uno/2009: // ---------------------- // DS3231: SDA pin -> Arduino Analog 4 or the dedicated SDA pin // SCL pin -> Arduino Analog 5 or the dedicated SCL pin // // Arduino Leonardo: // ---------------------- // DS3231: SDA pin -> Arduino Digital 2 or the dedicated SDA pin // SCL pin -> Arduino Digital 3 or the dedicated SCL pin // // Arduino Mega: // ---------------------- // DS3231: SDA pin -> Arduino Digital 20 (SDA) or the dedicated SDA pin // SCL pin -> Arduino Digital 21 (SCL) or the dedicated SCL pin // // Arduino Due: // ---------------------- // DS3231: SDA pin -> Arduino Digital 20 (SDA) or the dedicated SDA1 (Digital 70) pin // SCL pin -> Arduino Digital 21 (SCL) or the dedicated SCL1 (Digital 71) pin // // The internal pull-up resistors will be activated when using the // hardware I2C interfaces. // // You can connect the DS3231 to any available pin but if you use any // other than what is described above the library will fall back to // a software-based, TWI-like protocol which will require exclusive access // to the pins used, and you will also have to use appropriate, external // pull-up resistors on the data and clock signals. // #include <DS3231.h> // Init the DS3231 using the hardware interface DS3231 rtc(SDA, SCL); Time t; void setup() { // Setup Serial connection Serial.begin(9600); // Uncomment the next line if you are using an Arduino Leonardo //while (!Serial) {} // Initialize the rtc object rtc.begin(); } void loop() { // Send Current time Serial.print("Current Time.............................: "); Serial.print(rtc.getDOWStr()); Serial.print(" "); Serial.print(rtc.getDateStr()); Serial.print(" -- "); Serial.println(rtc.getTimeStr()); // Send Unixtime // ** Note that there may be a one second difference between the current time ** // ** and current unixtime show if the second changes between the two calls ** Serial.print("Current Unixtime.........................: "); Serial.println(rtc.getUnixTime(rtc.getTime())); // Send Unixtime for 00:00:00 on January 1th 2014 Serial.print("Unixtime for 00:00:00 on January 1th 2014: "); t.hour = 0; t.min = 0; t.sec = 0; t.year = 2014; t.mon = 1; t.date = 1; Serial.println(rtc.getUnixTime(t)); // Wait indefinitely while (1) {}; }