我正在使用 Arduino 和 DS1307。我已经从 RTC 获取时间没问题,但是当我尝试应用 setSyncProvider 调用时,我得到了一些错误,这些错误暗示我的库中的 ds1307.h 文件。附件是我的代码和错误。这些错误,我不太确定它们是什么意思。我是否需要进入notepad ++并将第66-68行更改为某些内容或更改.h?有没有人有想法?非常感谢您的帮助。顺便说一句,代码来自 Arduino Cookbook,所以我知道它可以工作,它只是那个 .h 文件中的东西......我想
#include <Time.h>
#include <Wire.h>
#include <DS1307.h> // a basic DS1307 library that returns time as a time_t
void setup() {
Serial.begin(9600);
setSyncProvider(RTC.get); // the function to get the time from the RTC
if(timeStatus() != timeSet)
Serial.println("Unable to sync with the RTC");
else
Serial.println("RTC has set the system time");
}
void loop() {
if(Serial.available()) {
time_t t = processSyncMessage();
if(t > 0) {
RTC.set(t); // set the RTC and the system time to the received value
setTime(t);
}
}
digitalClockDisplay();
delay(1000);
}
void digitalClockDisplay() {
// digital clock display of the time
Serial.print(hour());
printDigits(minute());
printDigits(second());
Serial.print(" ");
Serial.print(day());
Serial.print(" ");
Serial.print(month());
Serial.print(" ");
Serial.print(year());
Serial.println();
}
// utility function for digital clock display: prints preceding colon and
// leading 0.
//
void printDigits(int digits) {
Serial.print(":");
if(digits < 10)
Serial.print('0');
Serial.print(digits);
}
/* code to process time sync messages from the serial port */
#define TIME_MSG_LEN 11 // time sync to PC is HEADER followed by Unix time_t
#define TIME_HEADER 'T' // Header tag for serial time sync message
time_t processSyncMessage() {
while(Serial.available() >= TIME_MSG_LEN ) {
char c = Serial.read() ;
Serial.print(c);
if( c == TIME_HEADER ) {
time_t pctime = 0;
for(int i=0; i < TIME_MSG_LEN -1; i++) {
c = Serial.read();
if( c >= '0' && c <= '9') {
pctime = (10 * pctime) + (c - '0') ; // convert digits to a number
}
}
return pctime;
}
}
return 0;
}
我的错误..................................................
sketch_dec27d.ino: In function 'void setup()':
sketch_dec27d:14: error: no matches converting function 'get' to type 'time_t (*)()'
C:\Users\AlbertR\Desktop\arduino-1.0.3\libraries\DS1307/DS1307.h:66: error: candidates are: void DS1307::get(int*, boolean)
C:\Users\AlbertR\Desktop\arduino-1.0.3\libraries\DS1307/DS1307.h:67: error: int DS1307::get(int, boolean)
sketch_dec27d.ino: In function 'void loop()':
sketch_dec27d:27: error: no matching function for call to 'DS1307::set(time_t&)'
C:\Users\AlbertR\Desktop\arduino-1.0.3\libraries\DS1307/DS1307.h:68: note: candidates are: void DS1307::set(int, int)