3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ArduinoAdvent Calendar 2021

Day 13

サクッとはじめるArduinoライブラリ

Last updated at Posted at 2021-12-12

この記事は「Arduino Advent Calendar 2021」の13日目の記事です。

よく使うメソッドは外出ししちゃおうっていう話

もう2〜3年くらいArduino使ってません(学生の時以来でしょうか)。でも使ってた頃よくあったのですが、スケッチは機能を追加すればするほどコード量が多くなります。しかも私がたまにあったのが、前に別のスケッチに書いた機能をコピってくるってやつです。
メソッド分ければコード量が多くてもそんな大したことないけれど、よく使うメソッドをしょっちゅうペッタンペッタンとコピーするくらいなら、ライブラリ化してしまってコード量減らしちゃおうって話です。

Arduinoライブラリの作り方

テンプレ

クイックスタートをモットーにしているので、細かいことは置いといてテンプレート貼っちゃいます。
(シリアル通信で"Hello World"を出す例をつけておきます)

MyLib.cpp
#include "MyLib.h"

MyLib::MyLib(){
	// コンストラクタはArudinoライブラリでも有効
    Serial.begin(9600);
}

void MyLib::method(void){
	// ここにスケッチに書いたものを、そのまま書く
    Serial.println("Hello World");
}
MyLib.h
// Arduino.hをインクルードすれば、Arduinoの関数が使える
#include "Arduino.h"

class MyLib{
public:
 // publicメソッド=>スケッチからアクセスできる
 MyLib();
 void method(void);
private:
 // privateメソッド=>スケッチからアクセスできない
};

できたCPPファイルとヘッダーファイルはZIPに圧縮しましょう。
fig1.png
とまぁ、こんな感じに。

作ったライブラリを取り込む

※スクショはmacOSです。

1. Arduino IDEの[スケッチ]→[ライブラリをインクルード]→[.ZIP形式のライブラリをインストール]を開く
fig2.png

2. さっき作ったZIPを取り込む
fig3.png

すると、[ライブラリをインクルード]のところに、MyLibができます。
fig4.png

作ったライブラリを使う

ライブラリをインクルードできたら、あとは使うだけです。

スケッチ
// ライブラリをインクルードすると勝手に追記される
#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"が出ているはずです。
fig5.png

最後に

この記事の動作確認で久しぶりにArduino触ったけど、やっぱ楽しいですね。
これをきっかけに、またArduino触ろうかしら…。

3
4
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
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?