ArduinoのRTCライブラリ、RTC8465を使う時の注意点
以前気圧ロガーの製作記事を書いたのですが、これを参考にして同じような物を作る方が時々いらっしゃいます。この時はまりやすいのがリアルタイムクロックのライブラリの修正。
そこで、修正方法のポイントを整理しておきます。
1. RTCのライブラリRTC8465の入手先
なんでも作っちゃう、かも。さんのブログの、Arduinoで遊ぼう - リアルタイムクロックの記事にあるリンク先から RTC8564-001.zipをダウンロード、解凍してArduinoのライブラリに追加。
実はここをどうやったか正確に覚えてないです。たぶんProgram Filesの中のArduinoのあるフォルダに入れたはずなのですが、実際にライブラリが動く場所は違ってくるみたいで、ここが混乱の元。
2. ライブラリの修正
このライブラリはIDEのV1.0以前に作られたものなので、以下を修正。
9行目に#include "Arduino.h"を追加(挿入)。

これで22行目のdelay(1000)がエラーにならなくなります。
・Wire.send を Wire.writeに書換え
・Wire.receive を Wire.readに書換え
量が多いのでエディターの文字列の置換でやると良いでしょう。
【2017/7/1 追記】
上記に加え6行目の #include <WConstants.h> をコメントアウト。
(上記情報は、まっくんさんから連絡いただきました、ありがとうございます。なお使った Arduino IDE は 1.8.1 です)
これだけの修正でコンパイルエラーは出なくなります。
3. 注意点
ここで重要なのはライブラリファイルのある場所を間違えないこと。ライブラリの追加方法にもよるのでしょうが、ユーザーが追加したライブラリはユーザーのマイドキュメントに置かれ、こちらが使われるようです。つまり下記のパス。これは私のWindows7の例で、OSなどの違いで上の方は変わります。
C:\Users\user\Documents\Arduino\libraries\RTC8564
紛らわしいのは以下のパスにライブラリ置いておいても参照されるのはマイドキュメントの方みたいです。
C:\Program Files (x86)\Arduino\libraries\RTC8564
つまり、Program Filesのフォルダーのライブラリを一生懸命修正しても何の役にも立ちません。実は私は何度かやりました、汗;
どの場所にあるライブラリが使用されているかを特定するのには、エラーメッセージを読めば判ります。

上のコンパイルエラーは、#include "Arduino.h"を追加しない場合に出ますが、メッセージを良く読むと、ライブラリファイルの場所は、C:\Users\user\Documents\・・・・と書いてあります。
ArduinoのIDEの1.0以降でそのまま使えるRTCライブラリがあればいいのですが、RTC8564を勝手にバージョンアップするわけにもいかないし。
【後記】
ライブラリの追加方法がいまいち納得できないのでもう少し調べたら、マイドキュメントの中のlibrariesフォルダの中にreadme.txtがあり。中には、
For information on installing libraries, see: http://arduino.cc/en/Guide/Librariesと書かれていました。
リンク先を読んでみると正しいやり方が書いてありました。IDE1.05以降だとzipのままで登録できちゃうみたいです。
なお、この記事ではArduinoのIDEは1.0.5を使っています。
そこで、修正方法のポイントを整理しておきます。
1. RTCのライブラリRTC8465の入手先
なんでも作っちゃう、かも。さんのブログの、Arduinoで遊ぼう - リアルタイムクロックの記事にあるリンク先から RTC8564-001.zipをダウンロード、解凍してArduinoのライブラリに追加。
実はここをどうやったか正確に覚えてないです。たぶんProgram Filesの中のArduinoのあるフォルダに入れたはずなのですが、実際にライブラリが動く場所は違ってくるみたいで、ここが混乱の元。
2. ライブラリの修正
このライブラリはIDEのV1.0以前に作られたものなので、以下を修正。
9行目に#include "Arduino.h"を追加(挿入)。

これで22行目のdelay(1000)がエラーにならなくなります。
・Wire.send を Wire.writeに書換え
・Wire.receive を Wire.readに書換え
量が多いのでエディターの文字列の置換でやると良いでしょう。
【2017/7/1 追記】
上記に加え6行目の #include <WConstants.h> をコメントアウト。
(上記情報は、まっくんさんから連絡いただきました、ありがとうございます。なお使った Arduino IDE は 1.8.1 です)
これだけの修正でコンパイルエラーは出なくなります。
3. 注意点
ここで重要なのはライブラリファイルのある場所を間違えないこと。ライブラリの追加方法にもよるのでしょうが、ユーザーが追加したライブラリはユーザーのマイドキュメントに置かれ、こちらが使われるようです。つまり下記のパス。これは私のWindows7の例で、OSなどの違いで上の方は変わります。
C:\Users\user\Documents\Arduino\libraries\RTC8564
紛らわしいのは以下のパスにライブラリ置いておいても参照されるのはマイドキュメントの方みたいです。
C:\Program Files (x86)\Arduino\libraries\RTC8564
つまり、Program Filesのフォルダーのライブラリを一生懸命修正しても何の役にも立ちません。実は私は何度かやりました、汗;
どの場所にあるライブラリが使用されているかを特定するのには、エラーメッセージを読めば判ります。

上のコンパイルエラーは、#include "Arduino.h"を追加しない場合に出ますが、メッセージを良く読むと、ライブラリファイルの場所は、C:\Users\user\Documents\・・・・と書いてあります。
ArduinoのIDEの1.0以降でそのまま使えるRTCライブラリがあればいいのですが、RTC8564を勝手にバージョンアップするわけにもいかないし。
【後記】
ライブラリの追加方法がいまいち納得できないのでもう少し調べたら、マイドキュメントの中のlibrariesフォルダの中にreadme.txtがあり。中には、
For information on installing libraries, see: http://arduino.cc/en/Guide/Librariesと書かれていました。
リンク先を読んでみると正しいやり方が書いてありました。IDE1.05以降だとzipのままで登録できちゃうみたいです。
なお、この記事ではArduinoのIDEは1.0.5を使っています。
tag : コンパイルエラーリアルタイムクロック