在Arduino数据记录屏蔽上使用实时时钟(RTC)

时间:2013-09-12 12:24:49

标签: arduino real-time-clock

我正在尝试设置和阅读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);

}

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

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我遇到了同样的问题。似乎当我解压缩zip文件时,它在另一个文件中创建了rtc文件。因此,每当您在运行草图时调用库时,由于头文件位于另一个文件夹中,因此无法找到它。

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

请勿复制包含RTClib文件夹的文件夹。

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

答案 2 :(得分:0)

我认为你没有包含libs的正确标题。

尝试更改

#include "RTCLib.h"

#include <RTCLib.h>

确保你有适当的图书馆和盾牌标题。

答案 3 :(得分:0)

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

从主菜单中选择

Sketch | Import Library | Add library 

并提供保存库文件的文件夹的路径。

如果要创建使用该库的草图,只需选择

Sketch | Import library

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

答案 4 :(得分:0)

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

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

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

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

  1. https://github.com/adafruit/RTClib
  2. 下载
  3. 解压缩zip文件
  4. 重命名名为&#34; RTClib-master&#34;的两个文件夹的内部。到&#34; RTClib&#34; (注意 - 这是包含readme.txt文件以及其他文件的文件夹)
  5. 将此文件夹移至上述库目录
  6. 重新启动IDE