0

作为一个更大项目的一部分,我正在开发这个 Arduino 测试应用程序。我已将我的 Arduino 连接到 Grove RTC(实时时钟 DS1307)模块,该模块现在在我的串行监视器中显示日期和时间。然而年份是错误的。如下图所示,它在年份字段中显示值 46。

串口监视器

下面是我用来获取日期和时间然后打印出来的两种方法。我从 tmElements 结构的 Year 字段中获取年份值。tmElements 类型驻留在 Time 库中。

// 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);
}

我怎么会得到这个错误的值?有人可以指导我正确的方向吗?

4

1 回答 1

1

啊..自己已经发现了问题。问题是我没有使用 tmYearToCalendar() 方法。

所以而不是:

Serial.print(tm.Year);

它必须是:

Serial.print(tmYearToCalendar(tm.Year));

现在就像一个魅力。只是想我会与大家分享。

于 2016-03-18T00:01:34.880 回答