我试图读取在我的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());
}发布于 2015-01-07 03:34:03
我想我找到问题了。我注意到这个问题并没有发生在我的第二台计算机上,在对两台计算机进行了大量比较之后,我加载了一个不同版本的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-06 15:48:36
建议:
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);
}祝你好运!
https://stackoverflow.com/questions/27800485
复制相似问题