概要
Arduino ライブラリを自作する
はじめに
Arduino IDE で開発していますが、ソースファイルひとつだと、コード量が増えてくると大変です。
そこで、よくできた自慢の関数は、ライブラリとして切り出して、再利用しましょう。
ライブラリを「使う」
ライブラリを「作る」前に、まず、有名なライブラリを「使う」ことから始めましょう。
ここでは、Time ライブラリを例にします。
- git コマンドは、インストールされてますか?
- clone します
$ git clone https://github.com/PaulStoffregen/Time.git
- clone したディレクトリをまるごと、zip します
(この時のディレクトリ名が、インポート時のライブラリ名になります。)
$ zip -r Time.zip Time
-
zipファイルを、IDE にインポートします。
(スケッチ-ライブラリをインクルード-.zip形式のライブラリをインストール)
これで使えるようになりました。 -
これで、
now();
等の関数が使えます。
(ヘッダ・ファイルをインクルードするだけで (リンクしないで) 使えるのは違和感がありますが、IDE側で便利にしてくれているのだと思います)
ライブラリを「作る」
では、実際に作ってみましょう。
ライブラリには、.h
(ヘッダ・ファイル) と.cpp
(ソース・ファイル) が必要です。
- NTP.h
#ifndef _NTP_h
#define _NTP_h
int ntpdate();
#endif
- NTP.cpp
#include "NTP.h"
int ntpdate()
{
return 0;
}
- sketch_xxx.ino
-
include
は、NTP.h
がソース・ファイルと同じディレクトリにあれば""
で囲みます。
(ソース・ファイルからの相対を意味する。)
-
#include "NTP.h" // " " で囲む
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
ntpdate();
}
- コンパイル&実機で実行して、うまくいくようなら、ソースを完成させましょう。
-
NTP.h
とNTP.cpp
を、新しいディレクトリを作成して、そこに移動します。
そのディレクトリごと zip してインポートすれば、ライブラリとして「使う」ことができるようになります。 - ライブラリとして使う際は、
include
は<>
で囲むようにします。
#include <NTP.h> // < > で囲む
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
ntpdate();
}
- Github で公開すれば、さらにみんなハッピーに。
ライブラリはどこにあるか?
Macの場合
インストールされたライブラリは、以下にあります。
(実は、ここに直接ディレクトリをコピーしてもよい)
~/Documents/Arduino/libraries/
ちなみに、システムで用意されているライブラリは、以下にあるようです。
/Applications/Arduino 2.app/Contents/Java/libraries/
まとめ
Arduino ライブラリを自作しました。
ファイルを分割すれば、すっきりして見通しが立ちやすくなります。
現在、例で出てきた NTP(時刻同期)ライブラリを、鋭意作成中です。うまく出来たら公開したいと思います。
おぃそこまちがっとるよ!て箇所は、ぜひ教えて下さい!