0

Arduino 用の Adafruit データログ シールドで時刻を設定して読み取ろうとしていますが、「RTC_DS1307」で型が指定されていないなどのいくつかのエラーが返されるため、Adafruit Web サイトのオープン ソース コードが機能していないようです、いくつかの変数が範囲外であると言っています。コードは次のとおりです。

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>検索し、ライブラリ フォルダーを検索します。上記のコードがスケッチにある場合 (つまり、ライブラリ内のサンプル ファイルではない場合)、includes ステートメントを変更するとコードが修正される場合があります。

于 2014-02-13T22:06:44.467 に答える
0

私はまったく同じ問題を抱えていて、このように解決しました:

スケッチは次の場所で RTC ライブラリを探します。

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

ライブラリを自分でインストールする必要があります (起動時にのみライブラリを検出するため、これを行う前に Arduino IDE のすべてのインスタンスを閉じます)。

  1. からダウンロード: https://github.com/adafruit/RTClib
  2. zip ファイルの解凍
  3. 「RTClib-master」という名前の 2 つのフォルダーの内側の名前を「RTClib」に変更します (注意 - これは、readme.txt ファイルと他のファイルを含むフォルダーです)。
  4. このフォルダを上記のライブラリ ディレクトリに移動します。
  5. IDE を再起動する
于 2015-01-29T23:55:31.667 に答える
0

ライブラリの適切なヘッダーが含まれていないと思います。

変更してみる

#include "RTCLib.h"

#include <RTCLib.h>

シールド用の適切なライブラリとヘッダーがあることを確認してください。

于 2013-09-12T12:39:02.007 に答える
0

Arduino IDE で利用可能なインポート ライブラリ機能を使用する必要があります。

メインメニューから選択

Sketch | Import Library | Add library 

ライブラリファイルを保持するフォルダーのパスを指定します。

そのライブラリを利用するスケッチを作成する場合は、選択するだけです

Sketch | Import library

をクリックして、リストからライブラリ名を選択します。正しいヘッダーがスケッチの上部に自動的に含まれます。

于 2014-06-01T16:17:27.883 に答える