Arduino用スケッチのサブルーチンをサブディレクトリに配置する
Arduinoで大きなスケッチを作成する場合、幾つかのファイルに分割したい場合があります。
現在手掛けている、豊四季タイニーBASICの拡張版はスケッチサイズが30350バイトあり、
ライブラリやサブルーチンで15個のファイルに分割しています。
そのうち、修正頻度の高い3つのファイルだけを、タブに表示するようにしています。

方法としては、スケッチのファイルの配置を次のような感じにすることで、
タブに表示するファイルと、表示されないファイルに分別しています。
\ttbasic
│ basic.cpp
│ ttbasic.ino
│ ttconfig.h
│
└─src
└─lib
FontGT20L16J1Y.cpp
FontGT20L16J1Y.h
IR.cpp
mcurses-config.h
mcurses.c
mcurses.h
MW25616L.cpp
MW25616L.h
SO1602AWWB.cpp
SO1602AWWB.h
TI2CEPPROM.cpp
TI2CEPPROM.h
スケッチファイル(ttbasic.ino)と同じフォルダにあるファイルはIDEのタブに表示されます。
サブディレクトリに配置したファイルはタブに表示されません。
利用頻度が多い自作ライブラリ・サブルーチンなんかはこの配置がお手軽です。
(本格的なライブラリにすると配布等も結構面倒ですし)
サブディレクトリは
src\lib
src\lib2
src\lib3
のように複数に分けて配置してもOKです。
公式サイトにはこの方法は記載されてないので、動作の保証は出来ないのですが、
とりあえず、この形態でスケッチを公開しており、いまのところ問題ないようです。
ただし、制約がいくつかあります。特にインクルード(#include文)において、
下位のディレクトリのファイルから上位のディレクトリのファイルのインクルードすると
エラーになります(ただし、パスが通っているシステム用のインクルードファイルはOK)。
上位から下位のファイルのインクルードは可能です。
例:basic.cppからsrc\lib\mcurses.hをインクルードする場合は、
#include "src\lib\mcurses.h"で行うことが出来ます。
src\lib\mcurses.hから上位のttconfig.hのインクルードはエラーになります。
#include "../../ttconfig.h"
本来ライブラリとしてlibrariesに配置するライブラリも、スケッチのサブディレクトリに
配置したいのですが、ライブラリに付随するサンプルまでコンパイルされていまいます。
(サンプルを削除すれば、配置できます)
また、タブに表示されていないファイルを修正する場合は、別途テキストエディタで
開いて編集を行う必要があります(これは、さほど苦にはなりませんが..)
« 豊四季タイニーBASIC for Arduino機能拡張版 作成しました | トップページ | BASIC言語が動くORANGE pico type S(キット)を組み立てました »
「arduino」カテゴリの記事
- Freenove Mecanum ホイール カー キットを購入しました(2025.05.28)
- Arduino IDE+Arduino STM32環境で指定と異なるgccが使われてしまう(2025.01.23)
- Zorin OSでArduino Uno互換機(CH340)が認識しない(2025.01.19)
- Arduino IDE 2.3.4でArduino STM32を利用する(2025.01.12)
- Arduino用 SKK日本語変換ライブラリの開発 その1(2024.12.28)
« 豊四季タイニーBASIC for Arduino機能拡張版 作成しました | トップページ | BASIC言語が動くORANGE pico type S(キット)を組み立てました »

コメント