この記事は「Arduino Advent Calendar 2021」の13日目の記事です。
よく使うメソッドは外出ししちゃおうっていう話
もう2〜3年くらいArduino使ってません(学生の時以来でしょうか)。でも使ってた頃よくあったのですが、スケッチは機能を追加すればするほどコード量が多くなります。しかも私がたまにあったのが、前に別のスケッチに書いた機能をコピってくるってやつです。
メソッド分ければコード量が多くてもそんな大したことないけれど、よく使うメソッドをしょっちゅうペッタンペッタンとコピーするくらいなら、ライブラリ化してしまってコード量減らしちゃおうって話です。
Arduinoライブラリの作り方
テンプレ
クイックスタートをモットーにしているので、細かいことは置いといてテンプレート貼っちゃいます。
(シリアル通信で"Hello World"
を出す例をつけておきます)
#include "MyLib.h"
MyLib::MyLib(){
// コンストラクタはArudinoライブラリでも有効
Serial.begin(9600);
}
void MyLib::method(void){
// ここにスケッチに書いたものを、そのまま書く
Serial.println("Hello World");
}
// Arduino.hをインクルードすれば、Arduinoの関数が使える
#include "Arduino.h"
class MyLib{
public:
// publicメソッド=>スケッチからアクセスできる
MyLib();
void method(void);
private:
// privateメソッド=>スケッチからアクセスできない
};
できたCPPファイルとヘッダーファイルはZIPに圧縮しましょう。
とまぁ、こんな感じに。
作ったライブラリを取り込む
※スクショはmacOSです。
1. Arduino IDEの[スケッチ]→[ライブラリをインクルード]→[.ZIP形式のライブラリをインストール]を開く
すると、[ライブラリをインクルード]のところに、MyLib
ができます。
作ったライブラリを使う
ライブラリをインクルードできたら、あとは使うだけです。
// ライブラリをインクルードすると勝手に追記される
#include <MyLib.h>
void setup() {
// put your setup code here, to run once:
// 定義するとコンストラクタが動く
MyLib lib; // Serial.begin(9600);
lib.method(); //Serial.println("Hello World");
}
void loop() {
// put your main code here, to run repeatedly:
}
出力結果
シリアルモニタに"Hello World"
が出ているはずです。
最後に
この記事の動作確認で久しぶりにArduino触ったけど、やっぱ楽しいですね。
これをきっかけに、またArduino触ろうかしら…。