google-site-verification: google3bd66dd162ef54c7.html

ArduinoのRTCライブラリ、RTC8465を使う時の注意点

 以前気圧ロガーの製作記事を書いたのですが、これを参考にして同じような物を作る方が時々いらっしゃいます。この時はまりやすいのがリアルタイムクロックのライブラリの修正。

 そこで、修正方法のポイントを整理しておきます。

1. RTCのライブラリRTC8465の入手先
 なんでも作っちゃう、かも。さんのブログの、Arduinoで遊ぼう - リアルタイムクロックの記事にあるリンク先から RTC8564-001.zipをダウンロード、解凍してArduinoのライブラリに追加。

 実はここをどうやったか正確に覚えてないです。たぶんProgram Filesの中のArduinoのあるフォルダに入れたはずなのですが、実際にライブラリが動く場所は違ってくるみたいで、ここが混乱の元。

2. ライブラリの修正
 このライブラリはIDEのV1.0以前に作られたものなので、以下を修正。 

9行目に#include "Arduino.h"を追加(挿入)。
20131130Library.gif
 これで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のフォルダーのライブラリを一生懸命修正しても何の役にも立ちません。実は私は何度かやりました、汗;

 どの場所にあるライブラリが使用されているかを特定するのには、エラーメッセージを読めば判ります。
20131130ArduinoError.gif

 上のコンパイルエラーは、#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 : コンパイル エラー リアルタイムクロック

コメントの投稿

管理者にだけ表示を許可する

No title

ラジオペンチさんのブログをいつも感心して拝見しています。
この気圧ロガーの最初のバージョン?書き込み済みのICをいただいて動かしていますが、時計の合わせ方がわからなくなってしまいました。
この頁を参考にバージョンアップを試みましたがRtc関係?のエラーが出てしまいます。(1.0.5使用)
なかなか大変です。
もう少し自力でがんばってみます。

jh3gpnさん今晩は

コメントありがとうございます。コールサインから判断すると私と同じ世代の方かと。

コンパイルエラーの件ですが、当方でやってみた結果は以下の通りです。何かの参考になれば幸いです。

以下、テスト結果です
------------------------------------------------
下記で公開しているスケッチを現在の私の環境(Arduino 1.6.5)でコンパイルしてみました。
http://radiopench.blog96.fc2.com/blog-entry-368.html

すると SPI.h が無いというエラーが出たので、下記をスケッチに追加、
#include<SPI.h>

その結果は、以下のようにちょっとワーニングが出ていますが、致命的な問題無しにコンパイラが通りました。

スケッチが プログラムストレージ領域の 26,286バイト (81%) を使用しています。最大は 32,256バイト です。
グローバル変数が 1,655バイト (80%) の 動的メモリを使用しており、ローカル変数に 393 バイトが残っています。最高は 2,048バイトです。
Low memory available, stability problems may occur.

ソーラータイマースイッチ

「ソーラータイマースイッチ」を作らさせていただきました。

その際に、RTC8564のライブラリの修正が必要とのことでしたので、ここを参考にさせていただきました。
なお、当方の環境(Arduino 1.8.3)では、9行目に「#include "Arduino.h"」を追加するほかに、6行目の「#include <WConstants.h>」を削除(コメントアウト)しないとコンパイルが通りませんでした。

「ソーラータイマースイッチ」では緯度経度を指定すると、その地点の、その日の「日の出・日の入り時刻」がLCD表示されますが、Webで調べたのとピッタリ合っていて、少し感動しました。

今後も楽しい実験・作品を期待しています。

RE:ソーラータイマースイッチ

まっくんさん、ソーラータイマースイッチを作っていただいてありがとうございます。そうやって試していただけると励みになります。

ところでRTC8564のライブラリの修正の件ですが、私のとこのライブラリファイルを見ると全く同じ処置をやっていました。
(RTC8564.cppの6行目の#include <WConstants.h> をコメントアウト)

この記事に書かないといけなかったのを書き洩らしたようです。すみません。後でこの記事に追記しておきます。
カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
プロフィール

ラジオペンチ

Author:ラジオペンチ
電子工作を中心としたブログです。たまに近所(東京都稲城市)の話題など。60過ぎて視力や器用さの衰えを感じつつ日々挑戦!
コメントを入れる時にメールアドレスの記入は不要です。なお、非公開コメントは受け付けていません。

記事が気に入ったらクリックを!
最新記事
カテゴリ
最新コメント
リンク
FC2カウンター
検索フォーム
月別アーカイブ
RSSリンクの表示
QRコード
QRコード