背景
PlatformIOとはマイコン向けのビルド環境の1つです。Arduino IDEと役割が似ていますが、より多機能な環境です。
さて、Arduino IDEより多機能と自分は思うPlatformIOですが、ライブラリのサンプルプログラムの閲覧と実行に関してはArduion IDEの方が勝ると思います。
それでもPlatformIOでサンプルプログラムを実行したい時があるので、方法をまとめてみました。
他に方法があれば、コメントなどで共有していただけると嬉しいです。
前提: ライブラリのコードは .pio/libdeps/[環境名]に配置される
PlatformIOはplatform.iniのlib_depsにライブラリを指定してビルドすると、.pio/libdeps/[環境名]にライブラリのコードがダウンロードして配置されます。例としてI2cControlPanelのライブラリをlib_depsとして指定します。
この例ではビルド対象としてleonardoを利用します。
platformio.ini
[env:leonardo]
platform = atmelavr
board = leonardo
framework = arduino
lib_deps = I2cControlPanel_asukiaaa
上記の設定でPlatformIOのビルドを実行すると、ライブラリが配置されます。
pio run
Processing leonardo (platform: atmelavr; board: leonardo; framework: arduino)
----------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/leonardo.html
PLATFORM: Atmel AVR (3.3.0) > Arduino Leonardo
HARDWARE: ATMEGA32U4 16MHz, 2.50KB RAM, 28KB Flash
DEBUG: Current (simavr) On-board (simavr)
PACKAGES:
- framework-arduino-avr 5.1.0
- toolchain-atmelavr 1.70300.191015 (7.3.0)
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Library Manager: Installing I2cControlPanel_asukiaaa
Library Manager: I2cControlPanel_asukiaaa @ 1.2.3 has been installed!
lsコマンドで見ると配置されているのが分かります。
ls .pio/libdeps/leonardo
この記事ではI2cControlPanelのPrintOnSerialサンプルをビルドします。
leonardo向けにダウンロードされたサンプルプログラムのパスは下記になります。
.pio/libdeps/leonardo/I2cControlPanel_asukiaaa/examples/PrintOnSerial/PrintOnSerial.ino
方法1: platformio.iniでsrc_dirとしてサンプルプログラムのディレクトリを指定する
platformio.iniにplatformioという設定を追加し、そこでサンプルプログラムのディレクトリをsrc_dirに指定します。このパスにはビルド対象となる環境名をPIOENVマクロで呼び出せるため、下記のように書けます。
platformio.ini
[platformio]
src_dir = .pio/libdeps/${PIOENV}/I2cControlPanel_asukiaaa/examples/PrintOnSerial
[env:leonardo]
platform = atmelavr
board = leonardo
framework = arduino
lib_deps = I2cControlPanel_asukiaaa
パスが合っていればビルドできます。
pio run
Compiling .pio/build/leonardo/src/PrintOnSerial.ino.cpp.o
注意: .pioの該当するディレクトリがダウンロードされてない場合、エラーになります。
ダウンロードよりsrcディレクトリの解釈が先になるようです。
初回のエラーを回避したい場合は下記のライブラリインストールコマンドをビルド前に実行してください。
pio lib install
方法2: src/main.cppでサンプルプログラムをincludeする
cppファイルはincludeを利用してコードの取り込みが可能なので、下記のように記述するとサンプルプログラムをビルドできます。src/main.cpp
#include <Arduino.h>
#include "../.pio/libdeps/leonardo/I2cControlPanel_asukiaaa/examples/PrintOnSerial/PrintOnSerial.ino"
この書き方だとPIOENVマクロは使えないため、環境名をパスに含めています。
パスが合っていればビルドできます。
pio run
方法3: サンプルプログラムをsrc/main.cppにコピーする
この方法はPlatformIOの仕組みは関係ありません。main.cppの先頭でArduinoフレームワークに必要なライブラリを読み込み、それ以後にビルドしたいファイルを貼り付ければ、PlatformIOでビルド可能なファイルになります。
src/main.cpp
#include <Arduino.h>
// ライブラリのコードをコピー・ペースト
ライブラリのコードを利用しつつ独自の実装に変更したい場合は、この方法が良いと思います。
まとめ
PlatformIOでライブラリのサンプルプログラムを実行する3つの方法を紹介しました。- platformio.iniでsrc_dirにサンプルプログラムのディレクトリを指定
- src/main.cppでサンプルプログラムのコードをinclude
- src/main.cppにサンプルプログラムをコピペ
他に方法があれば、コメントなどで共有していただけると嬉しいです。
0 件のコメント :
コメントを投稿