Arduino RTC rtc.getAlarmHour() 不工作
Arduino RTC rtc.getAlarmHour() not working
我正在尝试读取我的 Arduino 实时时钟 (RTC) 中设置的闹钟,但由于某些原因 rtc.getAlarmHour() 和 rtc.getAlarmMinute() 似乎不起作用.我之前让他们工作,但我不确定发生了什么变化。我正在使用 Arduino Uno。下面的代码只是 returns "Next Alarm: 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());
}
建议:
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);
}
祝你好运!
我想我找到了问题所在。我注意到我的第二台计算机上没有出现该问题,在对计算机进行多次比较后,我加载了不同版本的 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;
}
我正在尝试读取我的 Arduino 实时时钟 (RTC) 中设置的闹钟,但由于某些原因 rtc.getAlarmHour() 和 rtc.getAlarmMinute() 似乎不起作用.我之前让他们工作,但我不确定发生了什么变化。我正在使用 Arduino Uno。下面的代码只是 returns "Next Alarm: 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());
}
建议:
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);
}
祝你好运!
我想我找到了问题所在。我注意到我的第二台计算机上没有出现该问题,在对计算机进行多次比较后,我加载了不同版本的 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;
}