嘿,我最近几天一直在处理这个问题这个。
我正在尝试从 RTC(实时时钟计时器)获取时间,无论如何,我认为这是首字母缩略词,但是当我拔下 USB 电缆大约 10 秒钟然后重新连接它的那一刻,它会给我带来这些有趣的时刻。
像 2036 年和 46 小时 165 分钟这样的东西真的只是垃圾。所以我在某处读到,这些时间只是程序表示与设备没有连接的方式。我并没有真正得到,因为它永久插入,但嘿,这就是它想要的。
因此,这是我从库附带的示例中获得的基本代码。我想因为没有连接只是做一个while循环,直到设备连接这很好,但有时需要10秒才能启动。
RTC 有一个备用电池,并通过 SCL 到 A5 和 SDA A4 线
正如我所说,它可以工作,但需要很长时间才能启动并给我正确的时间。
// Date and time functions using a DS1307 RTC connected via I2C and Wire lib
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
void setup () {
Serial.begin(57600);
Wire.begin();
RTC.begin();
Serial.println("RTC capturing time!");
while (! RTC.isrunning())
{
Serial.println("RTC is NOT running!");
Wire.begin();
RTC.begin();
}
Serial.println("RTC IS running!");
// following line sets the RTC to the date & time this sketch was compiled
// RTC.adjust(DateTime(__DATE__, __TIME__));
}
void loop () {
DateTime now = RTC.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
Serial.println();
delay(1000);
}
输出看起来像这样,只是没有运行更多的 RTC!
RTC is NOT running!
RTC is NOT running!
RTC is NOT running!
RTC is NOT running!
RTC is NOT running!
RTC is NOT running!
RTC is NOT running!
RTC is NOT running!
RTC is NOT running!
RTC is NOT running!
RTC is NOT running!
RTC IS running!
2013/6/11 22:22:0
2013/6/11 22:22:2
2013/6/11 22:22:3
2013/6/11 22:22:4
2013/6/11 22:22:5
如果我不包括我的while循环想法,我会像我之前所说的那样把时间和日期弄得一团糟,直到由于某种原因它本身就正确了。
如果有人知道解决我的问题的更好方法,请告诉我,我真的很困惑为什么会发生这种情况。