Arduino 特定固有のライブラリを使う方法

published_with_changes 更新日: event_note 公開日:

labelMemo/Note

自分の覚えのため、ネット上の記事を引用/抜粋したものをまとめておきます。


  • 同じヘッダーファイル名を持つ複数のライブラリがインストールされている(想定と違うライブラリが使われている)。
  • あるスケッチ(またはライブラリ)を使いたいが、同じ名前のライブラリが既にインストールされている。そのライブラリは触りたくない。
ときに、特定固有のライブラリを使う方法になります。

対応策としては(これをスケッチで使うには)、

  1. ソースファイルをスケッチと同じフォルダーに入れる。
  2. スケッチのフォルダにsrcフォルダーを作成し、ライブラリフォルダーごとコピー。

といったふたつの方法があります。

1.ソースファイルをスケッチと同じフォルダーに入れる。

ソースファイルはヘッダファイルとcppファイル構成が多いので、これらのファイルをinoファイルと同じフォルダーにコピーしてしまう。
ライブラリのインクルードは通常
1
#include <RTClib.h>
の様に記述する。<>で囲むとビルド時 ドキュメント/Arduino/libraries やボードパッケージのライブラリフォルダー内を探しに行くため、スケッチと同じフォルダーにファイルを置いても見つからずエラーとなる。

スケッチと同じフォルダーにあるファイルを参照するには、

1
2
3
4
5
6
7
8
9
#include "RTClib.h"
RTC_Millis rtc;
 
void setup() {
    rtc.begin(DateTime(F(__DATE__), F(__TIME__)));
}
 
void loop() {
}
の様にincludeをダブルクオテーションで記述する。

2.スケッチのフォルダにsrcフォルダーを作成し、ライブラリフォルダーごとコピーする。


フォルダーごとライブラリをスケッチのフォルダーにコピーしたい場合には、src サブフォルダーを作成し、その下に ライブラリのフォルダーをコピーする。src フォルダー以外に置いた場合ビルド時エラーとなる(srcフォルダーのみ特殊扱いとなっている)。

そしてincludeを下記の様に記述する。
1
2
3
4
5
6
7
8
9

#include "src/RTClib/RTClib.h"
RTC_Millis rtc;
 
void setup() {
    rtc.begin(DateTime(F(__DATE__), F(__TIME__)));
}
 
void loop() {
}

  • 「<>」でくくるとコンパイラーに環境変数などで設定されたパスから探す
  • 「””」でくくるとカレントディレクトリを探して、無ければコンパイラーに環境変数などで設定されたパスから探す

より詳細な説明は、下記

Powered by Blogger | Designed by QooQ

keyboard_double_arrow_down

keyboard_double_arrow_down