|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- /*
- * TimeRTC.pde
- * example code illustrating Time library with Real Time Clock.
- *
- * This example requires Markus Lange's Arduino Due RTC Library
- * https://github.com/MarkusLange/Arduino-Due-RTC-Library
- */
-
- #include <TimeLib.h>
- #include <rtc_clock.h>
-
- // Select the Slowclock source
- //RTC_clock rtc_clock(RC);
- RTC_clock rtc_clock(XTAL);
-
- void setup() {
- Serial.begin(9600);
- rtc_clock.init();
- if (rtc_clock.date_already_set() == 0) {
- // Unfortunately, the Arduino Due hardware does not seem to
- // be designed to maintain the RTC clock state when the
- // board resets. Markus described it thusly: "Uhh the Due
- // does reset with the NRSTB pin. This resets the full chip
- // with all backup regions including RTC, RTT and SC. Only
- // if the reset is done with the NRST pin will these regions
- // stay with their old values."
- rtc_clock.set_time(__TIME__);
- rtc_clock.set_date(__DATE__);
- // However, this might work on other unofficial SAM3X boards
- // with different reset circuitry than Arduino Due?
- }
- setSyncProvider(getArduinoDueTime);
- if(timeStatus()!= timeSet)
- Serial.println("Unable to sync with the RTC");
- else
- Serial.println("RTC has set the system time");
- }
-
- time_t getArduinoDueTime()
- {
- return rtc_clock.unixtime();
- }
-
- void loop()
- {
- digitalClockDisplay();
- delay(1000);
- }
-
- void digitalClockDisplay(){
- // digital clock display of the time
- Serial.print(hour());
- printDigits(minute());
- printDigits(second());
- Serial.print(" ");
- Serial.print(day());
- Serial.print(" ");
- Serial.print(month());
- Serial.print(" ");
- Serial.print(year());
- Serial.println();
- }
-
- void printDigits(int digits){
- // utility function for digital clock display: prints preceding colon and leading 0
- Serial.print(":");
- if(digits < 10)
- Serial.print('0');
- Serial.print(digits);
- }
-
|