0

我正在尝试在 Arduino 的 Adafruit 数据记录屏蔽上设置和读取时间,但 Adafruit 网站上的开源代码似乎无法正常工作,因为它返回了几个错误,例如“RTC_DS1307”没有命名类型,并说几个变量超出了范围。代码是:

enter code here #include <Wire.h>
#include "RTClib.h"

RTC_DS1307 RTC;

void setup () {
Serial.begin(57600);
Wire.begin();
RTC.begin();

  if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
// uncomment it & upload to set the time, date and start run the RTC!
//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.print(" since 1970 = ");
Serial.print(now.unixtime());
Serial.print("s = ");
Serial.print(now.unixtime() / 86400L);
Serial.println("d");

// calculate a date which is 7 days and 30 seconds into the future
DateTime future (now.unixtime() + 7 * 86400L + 30);

Serial.print(" now + 7d + 30s: ");
Serial.print(future.year(), DEC);
Serial.print('/');
Serial.print(future.month(), DEC);
Serial.print('/');
Serial.print(future.day(), DEC);
Serial.print(' ');
Serial.print(future.hour(), DEC);
Serial.print(':');
Serial.print(future.minute(), DEC);
Serial.print(':');
Serial.print(future.second(), DEC);
Serial.println();

Serial.println();
delay(3000);

}

有谁知道如何解决这个问题?非常感谢!

4

5 回答 5

1

我有同样的问题。似乎当我提取 zip 文件时,它在另一个文件中创建了 rtc 文件。因此,无论何时您在运行草图时调用该库,它都无法找到它,因为头文件位于另一个文件夹中。

您需要做的只是确保将 RTClib 文件夹(其中包含头文件)直接复制到 Arduino 库中。

不要复制包含 RTClib 文件夹的文件夹。

对不起我的英语我不是母语人士。

于 2014-04-27T09:25:44.033 回答
1

这可能为时已晚几个月,但#include "RTCLib.h"在当前项目文件夹中查找 RTCLib.h,同时#include <RTCLib.h>在库文件夹中查找。如果上面的代码在草图中(即不是库中的示例文件),则更改您的包含语句可能会修复您的代码。

于 2014-02-13T22:06:44.467 回答
0

您应该使用 Arduino IDE 中提供的导入库功能。

从主菜单中选择

Sketch | Import Library | Add library 

并提供包含库文件的文件夹的路径。

当您想创建一个使用该库的草图时,只需选择

Sketch | Import library

并从列表中选择库名称。正确的标题将自动包含在草图的顶部。

于 2014-06-01T16:17:27.883 回答
0

我认为您没有包含正确的库标题。

尝试改变

#include "RTCLib.h"

#include <RTCLib.h>

确保你有适当的屏蔽库和头文件。

于 2013-09-12T12:39:02.007 回答
0

我只是遇到了完全相同的问题并以这种方式解决了它:

该草图在以下位置查找 RTC 库:

C:\users\<userid>\Documents\Arduino\libraries

您必须自己安装库(并在执行此操作之前关闭 Arduino IDE 的所有实例,因为它仅在启动时检测库):

  1. 下载地址:https ://github.com/adafruit/RTClib
  2. 提取 zip 文件
  3. 将名为“RTClib-master”的两个文件夹的内部重命名为“RTClib”(注意 - 这是包含 readme.txt 文件以及其他文件的文件夹)
  4. 将此文件夹移动到上面提到的库目录
  5. 重启IDE
于 2015-01-29T23:55:31.667 回答