LoginSignup
70
77

More than 5 years have passed since last update.

はじめての Arduino ライブラリ

Last updated at Posted at 2016-01-04

概要

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(時刻同期)ライブラリを、鋭意作成中です。うまく出来たら公開したいと思います。

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

70
77
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
70
77