0
我正在研究这个Arduino测试应用程序作为一个更大的项目的一部分。我已将Arduino连接到Grove RTC(实时时钟DS1307)模块,该模块现在将日期和时间吐出到串行监视器中。然而,一年是错误的。如下图所示,它显示年份字段中的值46。Arduino与RTC得到错误的一年
下面是两种方法,我使用获取日期和时间,然后打印出来。我从tmElements结构的Year字段获取年份值。 tmElements类型驻留在时间库中。
// Gets date and time and prints out in "DD/MM/YYYY - HH:MM:SS" format.
void getTime(){
tmElements_t tm;
if (RTC.read(tm)){
getFormattedValue(tm.Day);
Serial.print("/");
getFormattedValue(tm.Month);
Serial.print("/");
Serial.print(tm.Year);
Serial.print(" - ");
getFormattedValue(tm.Hour);
Serial.print(":");
getFormattedValue(tm.Minute);
Serial.print(":");
getFormattedValue(tm.Second);
Serial.println();
}
}
// Formats the time value to two digits. Example: if hour is 7 it will be formatted as 07.
void getFormattedValue(int number) {
if (number >= 0 && number < 10) {
Serial.write('0');
}
Serial.print(number);
}
我怎么会得到这个错误的价值?有人能指导我正确的方向吗?
只需详细说明,tmYearToCalendar()方法只是将1970年添加到tm.Year的值。那是因为tm.Year是自1970年以来的年数。 – RonRonDK