ライブラリとは
ライブラリとは、スケッチから利用できる追加機能を提供するソフトウェアです。例えば、デバイスを利用するための機能やデータを操作するための機能を追加することができます。
Arduinoソフトウェアをインストールした際に、主にAVRアーキテクチャ用のいくつかのライブラリがデフォルトでインストールされます。
例えば、以下のようなライブラリを利用することができます。
ライブラリ | 用途 |
---|---|
EEPROMライブラリ | EEPROMの読み書き |
SPI | SPI通信 |
Wire | I2C通信 |
LiquidCrystal | 液晶ディスプレイの操作 |
SD | SDカードの読み書き |
ライブラリには、標準ライブラリとコミュニティ提供ライブラリがあります。また、自分でライブラリを作成することもできます。
Arduinoには、上記以外にも多くのライブラリが用意されており、様々な機器を簡単に操作することができるようになっています。
ライブラリのインストール
ライブラリのインストール方法を参照してください。いくつかのインストール方法を紹介しています。
ライブラリを使う
ライブラリを利用するには、ライブラリが提供しているヘッダファイルをインクルードします。
例えば、EEPROMライブラリを利用する際は、EEPROMライブラリが提供する、“EEPROM.h"というヘッダファイルをインクルードします。具体的には、ソースコードに、以下のような記述を行います。
|
|
実際に利用する際は、各ライブラリが提供するドキュメントなどを参考にしてください。
ライブラリの配置場所
ライブラリは、以下のようなディレクトリに配置されます。$userはユーザディレクトリ(C:\Users\USERNAMEなど)、$arduinoはArduinoソフトウェアをインストールしたディレクトリ(C:\Program Files (x86)\Arduinoなど)です。利用するArduinoのアーキテクチャにより場所が異なります。
- $user\Documents\Arduino\libraries
- $arduino\hardware\arduino\avr\libraries
- $arduino\libraries
- $arduino\hardware\tools\avr\avr\include
ライブラリの優先度
インクルードしたヘッダファイルと同じ名前のヘッダファイルが複数ある場合は、以下のような要素を比較して、決定されるようです。
- アーキテクチャに最適化されたライブラリ(library.propertiesのarchitecturesが適合)
- アーキテクチャに適合したライブラリ(library.propertiesのarchitecturesが*)
- ヘッダファイルが存在するディレクトリ名
- ヘッダファイルの配置場所
- ディレクトリ名のアルファベット順
ソースコードを解析した結果なので、間違えている可能性がありますが、おそらく、以下のようなアルゴリズムで動作しています。
-
アーキテクチャ適合度
- アーキテクチャに最適化されている場合: +1010
- アーキテクチャに適合している場合: +1000
-
ディレクトリ名適合度
- ディレクトリ名が、ヘッダファイル名(.h等を除く)と同じ場合: +500
- ディレクトリ名が、ヘッダファイル名(.h等を除く)-masterと同じ場合: +400
- ディレクトリ名が、ヘッダファイル名(.h等を除く)で始まる場合: +300
- ディレクトリ名が、ヘッダファイル名(.h等を除く)で終わる場合: +200
- ディレクトリ名が、ヘッダファイル名(.h等を除く)を含む場合: +100
-
ヘッダファイル位置適合度
- IDEに付属($arduino\libraries): +0
- 参照ボードに付属: +1
- ボードに付属: +2
- ユーザライブラリ: +3
上記3つの評価の合計が、大きいヘッダファイルを利用する。
参考URL
- https://arduino.github.io/arduino-cli/sketch-build-process/
- https://github.com/arduino/arduino-cli/blob/master/arduino/libraries/librariesresolver/cpp.go
最終更新日
March 17, 2024