diff --git a/DateStrings.cpp b/DateStrings.cpp index 3eccff3..95c2f99 100644 --- a/DateStrings.cpp +++ b/DateStrings.cpp @@ -4,9 +4,9 @@ * Updated for Arduino 1.5.7 18 July 2014 * * No memory is consumed in the sketch if your code does not call any of the string methods - * You can change the text of the strings, make sure the short strings are each exactly 3 characters + * You can change the text of the strings, make sure the short strings are each exactly 3 characters * the long strings can be any length up to the constant dt_MAX_STRING_LEN defined in TimeLib.h - * + * */ #if defined(__AVR__) @@ -21,77 +21,32 @@ #endif #include // for strcpy_P or strcpy #include "TimeLib.h" - -// the short strings for each day or month must be exactly dt_SHORT_STR_LEN -#define dt_SHORT_STR_LEN 3 // the length of short strings +#include "Translation.h" static char buffer[dt_MAX_STRING_LEN+1]; // must be big enough for longest string and the terminating null -const char monthStr0[] PROGMEM = ""; -const char monthStr1[] PROGMEM = "January"; -const char monthStr2[] PROGMEM = "February"; -const char monthStr3[] PROGMEM = "March"; -const char monthStr4[] PROGMEM = "April"; -const char monthStr5[] PROGMEM = "May"; -const char monthStr6[] PROGMEM = "June"; -const char monthStr7[] PROGMEM = "July"; -const char monthStr8[] PROGMEM = "August"; -const char monthStr9[] PROGMEM = "September"; -const char monthStr10[] PROGMEM = "October"; -const char monthStr11[] PROGMEM = "November"; -const char monthStr12[] PROGMEM = "December"; - -const PROGMEM char * const PROGMEM monthNames_P[] = -{ - monthStr0,monthStr1,monthStr2,monthStr3,monthStr4,monthStr5,monthStr6, - monthStr7,monthStr8,monthStr9,monthStr10,monthStr11,monthStr12 -}; - -const char monthShortNames_P[] PROGMEM = "ErrJanFebMarAprMayJunJulAugSepOctNovDec"; - -const char dayStr0[] PROGMEM = "Err"; -const char dayStr1[] PROGMEM = "Sunday"; -const char dayStr2[] PROGMEM = "Monday"; -const char dayStr3[] PROGMEM = "Tuesday"; -const char dayStr4[] PROGMEM = "Wednesday"; -const char dayStr5[] PROGMEM = "Thursday"; -const char dayStr6[] PROGMEM = "Friday"; -const char dayStr7[] PROGMEM = "Saturday"; - -const PROGMEM char * const PROGMEM dayNames_P[] = -{ - dayStr0,dayStr1,dayStr2,dayStr3,dayStr4,dayStr5,dayStr6,dayStr7 -}; - -const char dayShortNames_P[] PROGMEM = "ErrSunMonTueWedThuFriSat"; - /* functions to return date strings */ char* monthStr(uint8_t month) { - strcpy_P(buffer, (PGM_P)pgm_read_word(&(monthNames_P[month]))); + strcpy_P(buffer, (PGM_P)pgm_read_word(&(monthTable[month]))); return buffer; } char* monthShortStr(uint8_t month) { - for (int i=0; i < dt_SHORT_STR_LEN; i++) - buffer[i] = pgm_read_byte(&(monthShortNames_P[i+ (month*dt_SHORT_STR_LEN)])); - buffer[dt_SHORT_STR_LEN] = 0; + strcpy_P(buffer, (PGM_P)pgm_read_word(&(monthShortTable[month]))); return buffer; } -char* dayStr(uint8_t day) +char* dayStr(uint8_t day) { - strcpy_P(buffer, (PGM_P)pgm_read_word(&(dayNames_P[day]))); + strcpy_P(buffer, (PGM_P)pgm_read_word(&(dayOfWeekTable[day]))); return buffer; } -char* dayShortStr(uint8_t day) +char* dayShortStr(uint8_t day) { - uint8_t index = day*dt_SHORT_STR_LEN; - for (int i=0; i < dt_SHORT_STR_LEN; i++) - buffer[i] = pgm_read_byte(&(dayShortNames_P[index + i])); - buffer[dt_SHORT_STR_LEN] = 0; - return buffer; + strcpy_P(buffer, (PGM_P)pgm_read_word(&(dayOfWeekShortTable[day]))); + return buffer; } diff --git a/TimeLib.h b/TimeLib.h index 20e2445..a45c98b 100644 --- a/TimeLib.h +++ b/TimeLib.h @@ -5,7 +5,7 @@ /* July 3 2011 - fixed elapsedSecsThisWeek macro (thanks Vincent Valdy for this) - fixed daysToTime_t macro (thanks maniacbug) -*/ +*/ #ifndef _Time_h #ifdef __cplusplus @@ -40,23 +40,23 @@ typedef enum { typedef enum { tmSecond, tmMinute, tmHour, tmWday, tmDay,tmMonth, tmYear, tmNbrFields -} tmByteFields; +} tmByteFields; -typedef struct { - uint8_t Second; - uint8_t Minute; - uint8_t Hour; +typedef struct { + uint8_t Second; + uint8_t Minute; + uint8_t Hour; uint8_t Wday; // day of week, sunday is day 1 uint8_t Day; - uint8_t Month; - uint8_t Year; // offset from 1970; + uint8_t Month; + uint8_t Year; // offset from 1970; } tmElements_t, TimeElements, *tmElementsPtr_t; -//convenience macros to convert to and from tm years -#define tmYearToCalendar(Y) ((Y) + 1970) // full four digit year +//convenience macros to convert to and from tm years +#define tmYearToCalendar(Y) ((Y) + 1970) // full four digit year #define CalendarYrToTm(Y) ((Y) - 1970) #define tmYearToY2k(Y) ((Y) - 30) // offset is from 2000 -#define y2kYearToTm(Y) ((Y) + 30) +#define y2kYearToTm(Y) ((Y) + 30) typedef time_t(*getExternalTime)(); //typedef void (*setExternalTime)(const time_t); // not used in this version @@ -71,32 +71,32 @@ typedef time_t(*getExternalTime)(); #define SECS_PER_WEEK ((time_t)(SECS_PER_DAY * DAYS_PER_WEEK)) #define SECS_PER_YEAR ((time_t)(SECS_PER_DAY * 365UL)) // TODO: ought to handle leap years #define SECS_YR_2000 ((time_t)(946684800UL)) // the time at the start of y2k - + /* Useful Macros for getting elapsed time */ -#define numberOfSeconds(_time_) ((_time_) % SECS_PER_MIN) -#define numberOfMinutes(_time_) (((_time_) / SECS_PER_MIN) % SECS_PER_MIN) +#define numberOfSeconds(_time_) ((_time_) % SECS_PER_MIN) +#define numberOfMinutes(_time_) (((_time_) / SECS_PER_MIN) % SECS_PER_MIN) #define numberOfHours(_time_) (((_time_) % SECS_PER_DAY) / SECS_PER_HOUR) #define dayOfWeek(_time_) ((((_time_) / SECS_PER_DAY + 4) % DAYS_PER_WEEK)+1) // 1 = Sunday #define elapsedDays(_time_) ((_time_) / SECS_PER_DAY) // this is number of days since Jan 1 1970 -#define elapsedSecsToday(_time_) ((_time_) % SECS_PER_DAY) // the number of seconds since last midnight +#define elapsedSecsToday(_time_) ((_time_) % SECS_PER_DAY) // the number of seconds since last midnight // The following macros are used in calculating alarms and assume the clock is set to a date later than Jan 1 1971 // Always set the correct time before settting alarms #define previousMidnight(_time_) (((_time_) / SECS_PER_DAY) * SECS_PER_DAY) // time at the start of the given day -#define nextMidnight(_time_) (previousMidnight(_time_) + SECS_PER_DAY) // time at the end of the given day +#define nextMidnight(_time_) (previousMidnight(_time_) + SECS_PER_DAY) // time at the end of the given day #define elapsedSecsThisWeek(_time_) (elapsedSecsToday(_time_) + ((dayOfWeek(_time_)-1) * SECS_PER_DAY)) // note that week starts on day 1 #define previousSunday(_time_) ((_time_) - elapsedSecsThisWeek(_time_)) // time at the start of the week for the given time #define nextSunday(_time_) (previousSunday(_time_)+SECS_PER_WEEK) // time at the end of the week for the given time /* Useful Macros for converting elapsed time to a time_t */ -#define minutesToTime_t ((M)) ( (M) * SECS_PER_MIN) -#define hoursToTime_t ((H)) ( (H) * SECS_PER_HOUR) +#define minutesToTime_t ((M)) ( (M) * SECS_PER_MIN) +#define hoursToTime_t ((H)) ( (H) * SECS_PER_HOUR) #define daysToTime_t ((D)) ( (D) * SECS_PER_DAY) // fixed on Jul 22 2011 -#define weeksToTime_t ((W)) ( (W) * SECS_PER_WEEK) +#define weeksToTime_t ((W)) ( (W) * SECS_PER_WEEK) /*============================================================================*/ /* time and date functions */ -int hour(); // the hour now +int hour(); // the hour now int hour(time_t t); // the hour for the given time int hourFormat12(); // the hour now in 12 hour format int hourFormat12(time_t t); // the hour for the given time in 12 hour format @@ -104,31 +104,40 @@ uint8_t isAM(); // returns true if time now is AM uint8_t isAM(time_t t); // returns true the given time is AM uint8_t isPM(); // returns true if time now is PM uint8_t isPM(time_t t); // returns true the given time is PM -int minute(); // the minute now +int minute(); // the minute now int minute(time_t t); // the minute for the given time -int second(); // the second now +int second(); // the second now int second(time_t t); // the second for the given time -int day(); // the day now +int day(); // the day now int day(time_t t); // the day for the given time -int weekday(); // the weekday now (Sunday is day 1) -int weekday(time_t t); // the weekday for the given time +int weekday(); // the weekday now (Sunday is day 1) +int weekday(time_t t); // the weekday for the given time int month(); // the month now (Jan is month 1) int month(time_t t); // the month for the given time -int year(); // the full four digit year: (2009, 2010 etc) +int year(); // the full four digit year: (2009, 2010 etc) int year(time_t t); // the year for the given time -time_t now(); // return the current time as seconds since Jan 1 1970 +time_t now(); // return the current time as seconds since Jan 1 1970 void setTime(time_t t); void setTime(int hr,int min,int sec,int day, int month, int yr); void adjustTime(long adjustment); -/* date strings */ +/* date strings */ #define dt_MAX_STRING_LEN 9 // length of longest date string (excluding terminating null) + +// Uncomment only the line corresponding to your language. + #define ENGLISH_L +// #define FRENCH_L +// #define GERMAN_L +// #define ITALIAN_L +// #define PORTUGUESE_L +// #define SPANISH_L + char* monthStr(uint8_t month); char* dayStr(uint8_t day); char* monthShortStr(uint8_t month); char* dayShortStr(uint8_t day); - + /* time sync functions */ timeStatus_t timeStatus(); // indicates if time has been set and recently synchronized void setSyncProvider( getExternalTime getTimeFunction); // identify the external time provider @@ -141,4 +150,3 @@ time_t makeTime(const tmElements_t &tm); // convert time elements into time_t } // extern "C++" #endif // __cplusplus #endif /* _Time_h */ - diff --git a/Translation.h b/Translation.h new file mode 100644 index 0000000..04d5efb --- /dev/null +++ b/Translation.h @@ -0,0 +1,307 @@ +#ifndef _Translation_h + #define _Translation_h + #if defined ENGLISH_L + const char month0[] PROGMEM = "ERR"; + const char month1[] PROGMEM = "JANUARY"; + const char month2[] PROGMEM = "FEBRUARY"; + const char month3[] PROGMEM = "MARCH"; + const char month4[] PROGMEM = "APRIL"; + const char month5[] PROGMEM = "MAY"; + const char month6[] PROGMEM = "JUNE"; + const char month7[] PROGMEM = "JULY"; + const char month8[] PROGMEM = "AUGUST"; + const char month9[] PROGMEM = "SEPTEMBER"; + const char month10[] PROGMEM = "OCTOBER"; + const char month11[] PROGMEM = "NOVEMBER"; + const char month12[] PROGMEM = "DECEMBER"; + + const char dayOfWeek0[] PROGMEM = "ERR"; + const char dayOfWeek1[] PROGMEM = "SUNDAY"; + const char dayOfWeek2[] PROGMEM = "MONDAY"; + const char dayOfWeek3[] PROGMEM = "TUESDAY"; + const char dayOfWeek4[] PROGMEM = "WEDNESDAY"; + const char dayOfWeek5[] PROGMEM = "THURSDAY"; + const char dayOfWeek6[] PROGMEM = "FRIDAY"; + const char dayOfWeek7[] PROGMEM = "SATURDAY"; + + const char monthShort0[] PROGMEM = "ERR"; + const char monthShort1[] PROGMEM = "JAN"; + const char monthShort2[] PROGMEM = "FEB"; + const char monthShort3[] PROGMEM = "MAR"; + const char monthShort4[] PROGMEM = "APR"; + const char monthShort5[] PROGMEM = "MAY"; + const char monthShort6[] PROGMEM = "JUN"; + const char monthShort7[] PROGMEM = "JUL"; + const char monthShort8[] PROGMEM = "AUG"; + const char monthShort9[] PROGMEM = "SEP"; + const char monthShort10[] PROGMEM = "OCT"; + const char monthShort11[] PROGMEM = "NOV"; + const char monthShort12[] PROGMEM = "DEC"; + + const char dayOfWeekShort0[] PROGMEM = "ERR"; + const char dayOfWeekShort1[] PROGMEM = "SUN"; + const char dayOfWeekShort2[] PROGMEM = "MON"; + const char dayOfWeekShort3[] PROGMEM = "TUE"; + const char dayOfWeekShort4[] PROGMEM = "WED"; + const char dayOfWeekShort5[] PROGMEM = "THU"; + const char dayOfWeekShort6[] PROGMEM = "FRI"; + const char dayOfWeekShort7[] PROGMEM = "SAT"; + + #elif defined FRENCH_L + const char month0[] PROGMEM = "ERR"; + const char month1[] PROGMEM = "JANVIER"; + const char month2[] PROGMEM = "FEVRIER"; + const char month3[] PROGMEM = "MARS"; + const char month4[] PROGMEM = "AVRIL"; + const char month5[] PROGMEM = "MAI"; + const char month6[] PROGMEM = "JUIN"; + const char month7[] PROGMEM = "JUINLLET"; + const char month8[] PROGMEM = "AOUT"; + const char month9[] PROGMEM = "SEPTEMBRE"; + const char month10[] PROGMEM = "OCTOBRE"; + const char month11[] PROGMEM = "NOVEMBRE"; + const char month12[] PROGMEM = "DECEMBRE"; + + const char dayOfWeek0[] PROGMEM = "ERR"; + const char dayOfWeek1[] PROGMEM = "DIMANCHE"; + const char dayOfWeek2[] PROGMEM = "LUNDI"; + const char dayOfWeek3[] PROGMEM = "MARDI"; + const char dayOfWeek4[] PROGMEM = "MERCREDI"; + const char dayOfWeek5[] PROGMEM = "JEUDI"; + const char dayOfWeek6[] PROGMEM = "VENDREDI"; + const char dayOfWeek7[] PROGMEM = "SAMEDI"; + + const char monthShort0[] PROGMEM = "ERR"; + const char monthShort1[] PROGMEM = "JAN"; + const char monthShort2[] PROGMEM = "FEV"; + const char monthShort3[] PROGMEM = "MAR"; + const char monthShort4[] PROGMEM = "AVR"; + const char monthShort5[] PROGMEM = "MAI"; + const char monthShort6[] PROGMEM = "JUI"; + const char monthShort7[] PROGMEM = "JUI"; + const char monthShort8[] PROGMEM = "AOU"; + const char monthShort9[] PROGMEM = "SEP"; + const char monthShort10[] PROGMEM = "OCT"; + const char monthShort11[] PROGMEM = "NOV"; + const char monthShort12[] PROGMEM = "DEC"; + + const char dayOfWeekShort0[] PROGMEM = "ERR"; + const char dayOfWeekShort1[] PROGMEM = "DIM"; + const char dayOfWeekShort2[] PROGMEM = "LUN"; + const char dayOfWeekShort3[] PROGMEM = "MAR"; + const char dayOfWeekShort4[] PROGMEM = "MER"; + const char dayOfWeekShort5[] PROGMEM = "JEU"; + const char dayOfWeekShort6[] PROGMEM = "VEN"; + const char dayOfWeekShort7[] PROGMEM = "SAM"; + + #elif defined GERMAN_L + const char month0[] PROGMEM = "ERR"; + const char month1[] PROGMEM = "JANUAR"; + const char month2[] PROGMEM = "FEBRUAR"; + const char month3[] PROGMEM = "MARZ"; + const char month4[] PROGMEM = "APRIL"; + const char month5[] PROGMEM = "MAI"; + const char month6[] PROGMEM = "JUNI"; + const char month7[] PROGMEM = "JULI"; + const char month8[] PROGMEM = "AUGUST"; + const char month9[] PROGMEM = "SEPTEMBER"; + const char month10[] PROGMEM = "OKTOBER"; + const char month11[] PROGMEM = "NOVEMBER"; + const char month12[] PROGMEM = "DEZEMBER"; + + const char dayOfWeek0[] PROGMEM = "ERR"; + const char dayOfWeek1[] PROGMEM = "SONNTAG"; + const char dayOfWeek2[] PROGMEM = "MONTAG"; + const char dayOfWeek3[] PROGMEM = "DIENSTAG"; + const char dayOfWeek4[] PROGMEM = "MITTWOCH"; + const char dayOfWeek5[] PROGMEM = "DONNERSTAG"; + const char dayOfWeek6[] PROGMEM = "FREITAG"; + const char dayOfWeek7[] PROGMEM = "SAMSTAG"; + + const char monthShort0[] PROGMEM = "ERR"; + const char monthShort1[] PROGMEM = "JAN"; + const char monthShort2[] PROGMEM = "FEB"; + const char monthShort3[] PROGMEM = "MAR"; + const char monthShort4[] PROGMEM = "APR"; + const char monthShort5[] PROGMEM = "MAI"; + const char monthShort6[] PROGMEM = "JUN"; + const char monthShort7[] PROGMEM = "JUL"; + const char monthShort8[] PROGMEM = "AUG"; + const char monthShort9[] PROGMEM = "SEP"; + const char monthShort10[] PROGMEM = "OKT"; + const char monthShort11[] PROGMEM = "NOV"; + const char monthShort12[] PROGMEM = "DEZ"; + + const char dayOfWeekShort0[] PROGMEM = "ERR"; + const char dayOfWeekShort1[] PROGMEM = "SON"; + const char dayOfWeekShort2[] PROGMEM = "MON"; + const char dayOfWeekShort3[] PROGMEM = "DIE"; + const char dayOfWeekShort4[] PROGMEM = "MIT"; + const char dayOfWeekShort5[] PROGMEM = "DON"; + const char dayOfWeekShort6[] PROGMEM = "FRE"; + const char dayOfWeekShort7[] PROGMEM = "SAM"; + + #elif defined ITALIAN_L + const char month0[] PROGMEM = "ERR"; + const char month1[] PROGMEM = "GENNAIO"; + const char month2[] PROGMEM = "FEBBRAIO"; + const char month3[] PROGMEM = "MARZO"; + const char month4[] PROGMEM = "APRILE"; + const char month5[] PROGMEM = "MAGGIO"; + const char month6[] PROGMEM = "GIUGNO"; + const char month7[] PROGMEM = "LUGLIO"; + const char month8[] PROGMEM = "AGOSTO"; + const char month9[] PROGMEM = "SETTEMBRE"; + const char month10[] PROGMEM = "OTTOBRE"; + const char month11[] PROGMEM = "NOVEMBRE"; + const char month12[] PROGMEM = "DICEMBRE"; + + const char dayOfWeek0[] PROGMEM = "ERR"; + const char dayOfWeek1[] PROGMEM = "DOMENICA"; + const char dayOfWeek2[] PROGMEM = "LUNEDI"; + const char dayOfWeek3[] PROGMEM = "MARTEDI"; + const char dayOfWeek4[] PROGMEM = "MERCOLEDI"; + const char dayOfWeek5[] PROGMEM = "GIOVEDI"; + const char dayOfWeek6[] PROGMEM = "VENERDI"; + const char dayOfWeek7[] PROGMEM = "SABATO"; + + const char monthShort0[] PROGMEM = "ERR"; + const char monthShort1[] PROGMEM = "GEN"; + const char monthShort2[] PROGMEM = "FEB"; + const char monthShort3[] PROGMEM = "MAR"; + const char monthShort4[] PROGMEM = "APR"; + const char monthShort5[] PROGMEM = "MAG"; + const char monthShort6[] PROGMEM = "GIU"; + const char monthShort7[] PROGMEM = "LUG"; + const char monthShort8[] PROGMEM = "AGO"; + const char monthShort9[] PROGMEM = "SET"; + const char monthShort10[] PROGMEM = "OTT"; + const char monthShort11[] PROGMEM = "NOV"; + const char monthShort12[] PROGMEM = "DIC"; + + const char dayOfWeekShort0[] PROGMEM = "ERR"; + const char dayOfWeekShort1[] PROGMEM = "DOM"; + const char dayOfWeekShort2[] PROGMEM = "LUN"; + const char dayOfWeekShort3[] PROGMEM = "MAR"; + const char dayOfWeekShort4[] PROGMEM = "MER"; + const char dayOfWeekShort5[] PROGMEM = "GIO"; + const char dayOfWeekShort6[] PROGMEM = "VEN"; + const char dayOfWeekShort7[] PROGMEM = "SAB"; + + #elif defined PORTUGUESE_L + const char month0[] PROGMEM = "ERR"; + const char month1[] PROGMEM = "JANEIRO"; + const char month2[] PROGMEM = "FEVEREIRO"; + const char month3[] PROGMEM = "MARCO"; + const char month4[] PROGMEM = "ABRIL"; + const char month5[] PROGMEM = "MAIO"; + const char month6[] PROGMEM = "JUNHO"; + const char month7[] PROGMEM = "JULHO"; + const char month8[] PROGMEM = "AGOSTO"; + const char month9[] PROGMEM = "SETEMBRO"; + const char month10[] PROGMEM = "OUTUBRO"; + const char month11[] PROGMEM = "NOVEMBRO"; + const char month12[] PROGMEM = "DEZEMBRO"; + + const char dayOfWeek0[] PROGMEM = "ERR"; + const char dayOfWeek1[] PROGMEM = "DOMINGO"; + const char dayOfWeek2[] PROGMEM = "SEGUNDA"; + const char dayOfWeek3[] PROGMEM = "TERCA"; + const char dayOfWeek4[] PROGMEM = "QUARTA"; + const char dayOfWeek5[] PROGMEM = "QUINTA"; + const char dayOfWeek6[] PROGMEM = "SEXTA"; + const char dayOfWeek7[] PROGMEM = "SABADO"; + + const char monthShort0[] PROGMEM = "ERR"; + const char monthShort1[] PROGMEM = "JAN"; + const char monthShort2[] PROGMEM = "FEV"; + const char monthShort3[] PROGMEM = "MAR"; + const char monthShort4[] PROGMEM = "ABR"; + const char monthShort5[] PROGMEM = "MAI"; + const char monthShort6[] PROGMEM = "JUN"; + const char monthShort7[] PROGMEM = "JUL"; + const char monthShort8[] PROGMEM = "AGO"; + const char monthShort9[] PROGMEM = "SET"; + const char monthShort10[] PROGMEM = "OUT"; + const char monthShort11[] PROGMEM = "NOV"; + const char monthShort12[] PROGMEM = "DEZ"; + + const char dayOfWeekShort0[] PROGMEM = "ERR"; + const char dayOfWeekShort1[] PROGMEM = "DOM"; + const char dayOfWeekShort2[] PROGMEM = "SEG"; + const char dayOfWeekShort3[] PROGMEM = "TER"; + const char dayOfWeekShort4[] PROGMEM = "QUA"; + const char dayOfWeekShort5[] PROGMEM = "QUI"; + const char dayOfWeekShort6[] PROGMEM = "SEX"; + const char dayOfWeekShort7[] PROGMEM = "SAB"; + + #elif defined SPANISH_L + const char month0[] PROGMEM = "ERR"; + const char month1[] PROGMEM = "ENERO"; + const char month2[] PROGMEM = "FEBRERO"; + const char month3[] PROGMEM = "MARZO"; + const char month4[] PROGMEM = "ABRIL"; + const char month5[] PROGMEM = "MAYO"; + const char month6[] PROGMEM = "JUNIO"; + const char month7[] PROGMEM = "JULIO"; + const char month8[] PROGMEM = "AGOSTO"; + const char month9[] PROGMEM = "SEPTIEMBRE"; + const char month10[] PROGMEM = "OCTUBRE"; + const char month11[] PROGMEM = "NOVIEMBRE"; + const char month12[] PROGMEM = "DECIEMBRE"; + + const char dayOfWeek0[] PROGMEM = "ERR"; + const char dayOfWeek1[] PROGMEM = "DOMINGO"; + const char dayOfWeek2[] PROGMEM = "LUNES"; + const char dayOfWeek3[] PROGMEM = "MARTES"; + const char dayOfWeek4[] PROGMEM = "MIERCOLES"; + const char dayOfWeek5[] PROGMEM = "JUEVES"; + const char dayOfWeek7[] PROGMEM = "VIERNES"; + const char dayOfWeek7[] PROGMEM = "SABADO"; + + const char monthShort0[] PROGMEM = "ERR"; + const char monthShort1[] PROGMEM = "ENE"; + const char monthShort2[] PROGMEM = "FEB"; + const char monthShort3[] PROGMEM = "MAR"; + const char monthShort4[] PROGMEM = "ABR"; + const char monthShort5[] PROGMEM = "MAY"; + const char monthShort6[] PROGMEM = "JUN"; + const char monthShort7[] PROGMEM = "JUL"; + const char monthShort8[] PROGMEM = "AGO"; + const char monthShort9[] PROGMEM = "SEP"; + const char monthShort10[] PROGMEM = "OCT"; + const char monthShort11[] PROGMEM = "NOV"; + const char monthShort12[] PROGMEM = "DEC"; + + const char dayOfWeekShort0[] PROGMEM = "ERR"; + const char dayOfWeekShort1[] PROGMEM = "DOM"; + const char dayOfWeekShort2[] PROGMEM = "LUN"; + const char dayOfWeekShort3[] PROGMEM = "MAR"; + const char dayOfWeekShort4[] PROGMEM = "MIE"; + const char dayOfWeekShort5[] PROGMEM = "JUE"; + const char dayOfWeekShort6[] PROGMEM = "VIE"; + const char dayOfWeekShort7[] PROGMEM = "SAB"; + #endif + + const char* const monthTable[] PROGMEM = + { + month0, month1, month2, month3, month4, month5, month6, + month7, month8, month9, month10, month11, month12 + }; + + const char* const monthShortTable[] PROGMEM = + { + monthShort0,monthShort1,monthShort2,monthShort3,monthShort4,monthShort5,monthShort6, + monthShort7,monthShort8,monthShort9,monthShort10,monthShort11,monthShort12 + }; + + const char* const dayOfWeekTable[] PROGMEM = + { + dayOfWeek0, dayOfWeek1, dayOfWeek2, dayOfWeek3, dayOfWeek4, dayOfWeek5, dayOfWeek6, dayOfWeek7 + }; + + const char* const dayOfWeekShortTable[] PROGMEM = + { + dayOfWeekShort0, dayOfWeekShort1, dayOfWeekShort2, dayOfWeekShort3, dayOfWeekShort4, dayOfWeekShort5, dayOfWeekShort6, dayOfWeekShort7 + }; +#endif // #ifndef _Translation_h diff --git a/examples/DateStringsRTC/DateStringsRTC.ino b/examples/DateStringsRTC/DateStringsRTC.ino new file mode 100644 index 0000000..2298613 --- /dev/null +++ b/examples/DateStringsRTC/DateStringsRTC.ino @@ -0,0 +1,85 @@ +/* + * example code illustrating date strings library with Real Time Clock. + * + */ + +#include +#include +#include // a basic DS1307 library that returns time as a time_t + +static boolean isLongFormat = true; // Change to false to get short format. + +void setup() +{ + Serial.begin(9600); + while (!Serial) // wait until Arduino Serial Monitor opens + { + } + setSyncProvider(RTC.get); // the function to get the time from the RTC + if(timeStatus() != timeSet) + { + Serial.println("Unable to sync with the RTC"); + } + else + { + Serial.println("RTC has set the system time"); + } +} + +void loop() +{ + if (timeStatus() == timeSet) + { + digitalClockDisplay(); + } + else + { + Serial.println("The time has not been set. Please run the Time"); + Serial.println("TimeRTCSet example, or DS1307RTC SetTime example."); + Serial.println(); + delay(4000); + } + delay(1000); +} + +void digitalClockDisplay() +{ + // digital clock display of the time + Serial.print(hour()); + printDigits(minute()); + printDigits(second()); + Serial.print(" "); + if(isLongFormat) + { + Serial.print(dayStr(weekday())); + } + else + { + Serial.print(dayShortStr(weekday())); + } + Serial.print(" "); + Serial.print(day()); + Serial.print(" "); + if(isLongFormat) + { + Serial.print(monthStr(month())); + } + else + { + Serial.print(monthShortStr(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); +}