1- #include < TimeLib.h>
21#include < CurieRTC.h>
32
43const char *monthName[12 ] = {
54 " Jan" , " Feb" , " Mar" , " Apr" , " May" , " Jun" ,
65 " Jul" , " Aug" , " Sep" , " Oct" , " Nov" , " Dec"
76};
87
9- tmElements_t tm;
8+ int Hour, Min, Sec;
9+ int Day, Month, Year;
1010
1111void setup () {
12- bool parse=false ;
13- bool config=false ;
14- time_t t;
12+ while (!Serial);
13+ Serial.begin (9600 );
1514
1615 // get the date and time the compiler was run
1716 if (getDate (__DATE__) && getTime (__TIME__)) {
18- t = makeTime (tm);
19- RTC.set (t);
20- parse = true ;
21- config = true ;
22- }
23-
24- Serial.begin (115200 );
25- delay (3000 );
26-
27- if (parse && config) {
2817 Serial.print (" Curie configured Time=" );
2918 Serial.print (__TIME__);
3019 Serial.print (" , Date=" );
3120 Serial.println (__DATE__);
21+
22+ setTime (Hour, Min, Sec, Day, Month, Year);
3223 } else {
3324 Serial.print (" Could not parse info from the compiler, Time=\" " );
3425 Serial.print (__TIME__);
@@ -39,33 +30,53 @@ void setup() {
3930}
4031
4132void loop () {
33+ Serial.print (" Time now is: " );
34+
35+ print2digits (hour ());
36+ Serial.print (" :" );
37+ print2digits (minute ());
38+ Serial.print (" :" );
39+ print2digits (second ());
40+
41+ Serial.print (" " );
42+
43+ Serial.print (day ());
44+ Serial.print (" /" );
45+ Serial.print (month ());
46+ Serial.print (" /" );
47+ Serial.print (year ());
48+
49+ Serial.println ();
50+
51+ delay (1000 );
4252}
4353
4454bool getTime (const char *str)
4555{
46- int Hour, Min, Sec;
47-
4856 if (sscanf (str, " %d:%d:%d" , &Hour, &Min, &Sec) != 3 ) return false ;
49- tm.Hour = Hour;
50- tm.Minute = Min;
51- tm.Second = Sec;
5257 return true ;
5358}
5459
5560bool getDate (const char *str)
5661{
57- char Month[12 ];
58- int Day, Year;
59- uint8_t monthIndex;
62+ char monthString[12 ];
6063
61- if (sscanf (str, " %s %d %d" , Month, &Day, &Year) != 3 ) return false ;
62- for (monthIndex = 0 ; monthIndex < 12 ; monthIndex++) {
63- if (strcmp (Month, monthName[monthIndex]) == 0 ) break ;
64+ if (sscanf (str, " %s %d %d" , monthString, &Day, &Year) != 3 ) {
65+ return false ;
6466 }
65- if (monthIndex >= 12 ) return false ;
66- tm.Day = Day;
67- tm.Month = monthIndex + 1 ;
68- tm.Year = CalendarYrToTm (Year);
69- return true ;
67+
68+ for (Month = 1 ; Month <= 12 ; Month++) {
69+ if (strcmp (monthString, monthName[Month - 1 ]) == 0 ) {
70+ break ;
71+ }
72+ }
73+
74+ return (Month <= 12 );
7075}
7176
77+ void print2digits (int number) {
78+ if (number >= 0 && number < 10 ) {
79+ Serial.print (' 0' );
80+ }
81+ Serial.print (number);
82+ }
0 commit comments