はじめての Arduino ライブラリ

More than 3 years have passed since last update.


概要

Arduino ライブラリを自作する


はじめに

Arduino IDE で開発していますが、ソースファイルひとつだと、コード量が増えてくると大変です。

そこで、よくできた自慢の関数は、ライブラリとして切り出して、再利用しましょう。


ライブラリを「使う」

ライブラリを「作る」前に、まず、有名なライブラリを「使う」ことから始めましょう。

ここでは、Time ライブラリを例にします。


  1. git コマンドは、インストールされてますか?

  2. clone します


    $ git clone https://github.com/PaulStoffregen/Time.git


  3. clone したディレクトリをまるごと、zip します

    (この時のディレクトリ名が、インポート時のライブラリ名になります。)


    $ zip -r Time.zip Time


  4. zipファイルを、IDE にインポートします。

    (スケッチ-ライブラリをインクルード-.zip形式のライブラリをインストール)

    スクリーンショット 2016-01-05 3.17.36.png

    これで使えるようになりました。


  5. インクルードして使います。

    (スケッチ-ライブラリをインクルード-Time)

    スクリーンショット 2016-01-05 1.39.57.png


  6. これで、now(); 等の関数が使えます。

    (ヘッダ・ファイルをインクルードするだけで (リンクしないで) 使えるのは違和感がありますが、IDE側で便利にしてくれているのだと思います)

    スクリーンショット 2016-01-05 2.39.01.png



ライブラリを「作る」

では、実際に作ってみましょう。

ライブラリには、.h(ヘッダ・ファイル) と.cpp(ソース・ファイル) が必要です。


  1. IDEの右端にある▼ボタンを押すと、タブ(ファイル) が追加できます。

    ここでは、例として、NTP.hNTP.cppを追加します。
    スクリーンショット 2016-01-05 1.58.40.png

  2. それぞれ、コードを書いていきます。
    スクリーンショット 2016-01-05 2.11.13.png


  • 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();
}


  1. コンパイル&実機で実行して、うまくいくようなら、ソースを完成させましょう。


  2. NTP.hNTP.cppを、新しいディレクトリを作成して、そこに移動します。
    そのディレクトリごと zip してインポートすれば、ライブラリとして「使う」ことができるようになります。

  3. ライブラリとして使う際は、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();
}


  1. Github で公開すれば、さらにみんなハッピーに。


ライブラリはどこにあるか?

Macの場合

インストールされたライブラリは、以下にあります。

(実は、ここに直接ディレクトリをコピーしてもよい)

~/Documents/Arduino/libraries/

ちなみに、システムで用意されているライブラリは、以下にあるようです。

/Applications/Arduino 2.app/Contents/Java/libraries/


まとめ

Arduino ライブラリを自作しました。

ファイルを分割すれば、すっきりして見通しが立ちやすくなります。

現在、例で出てきた NTP(時刻同期)ライブラリを、鋭意作成中です。うまく出来たら公開したいと思います。

おぃそこまちがっとるよ!て箇所は、ぜひ教えて下さい!