0

我正在尝试读取在我的 Arduino 实时时钟 (RTC) 中设置的闹钟,但由于某种原因 rtc.getAlarmHour() 和 rtc.getAlarmMinute() 似乎不起作用。我之前让他们工作过,但我不确定发生了什么变化。我正在使用 Arduino Uno。以下代码仅返回“下一个警报:0:0”。

#include <Rtc_Pcf8563.h>
Rtc_Pcf8563 rtc;
void setup(){
    rtc.clearStatus();
    rtc.setAlarm(byte(rtc.getMinute())+2,byte(rtc.getHour()),99,99);
    Serial.begin(9600);
    printAlarm();
}

void loop(){  
}

void printAlarm(){
  Serial.print("Next Alarm  ");
  Serial.print(rtc.getAlarmHour());
  Serial.print(":");
  Serial.print(rtc.getAlarmMinute());
}
4

2 回答 2

1

我想我找到了问题所在。我注意到我的第二台计算机上没有出现该问题,在计算机之间进行了多次比较之后,我加载了不同版本的 RTC_Pcf8563 库(我在第二台计算机上拥有),问题得到了解决。通过只用旧库替换库的一项更改,这个问题肯定得到了解决。在故障排除过程中,我还重新加载了较新的库,但没有帮助,所以这似乎是 RTC_Pcf8563 版本 1.0.1 的问题。

然后经过一番调查,我发现我在第二台计算机上的 RTC_Pcf8563 版本是 1.0.1 版本的更正副本。似乎在 1.0.1 版本中 getAlarmHour() 和 getAlarmMinute() 函数缺少对 getAlarm() 函数的调用。如果添加了此调用,则一切正常。

1.0.1 版本中的原始功能

byte Rtc_Pcf8563::getAlarmMinute() { return alarm_minute; }

修正功能

byte Rtc_Pcf8563::getAlarmMinute() { getAlarm(); return alarm_minute; }

于 2015-01-07T03:34:03.863 回答
0

建议:

1)检查时钟芯片的I2C地址

2) 尝试 Arduino 库文档中的示例:

#include <Wire.h>

#include <Rtc_Pcf8563.h>

//init the real time clock
Rtc_Pcf8563 rtc;

void setup()
{
  //clear out the registers
  rtc.initClock();
  //set a time to start with.
  //day, weekday, month, century(1=1900, 0=2000), year(0-99)
  rtc.setDate(14, 6, 3, 1, 10);
  //hr, min, sec
  rtc.setTime(1, 15, 0);
}

void loop()
{
  //both format functions call the internal getTime() so that the
  //formatted strings are at the current time/date.
  Serial.print(rtc.formatTime());
  Serial.print("\r\n");
  Serial.print(rtc.formatDate());
  Serial.print("\r\n");
  delay(1000);
}

祝你好运 !

于 2015-01-06T15:48:36.197 回答