スケッチの複数ファイル分割方法(Arduino IDE)
はじめに
プログラムを進めていくと、コード量が多くなり、複数ファイルにわけたくなる時がきます。
知っていると当たり前なのですが、初めのころはやり方がわからなくてつまづきました。
開発環境
OS : Windows 11 Pro
ESP32:ESP-WROOM-32
統合開発環境 : Arduino IDE 2.3.2
Arduino core for the ESP32:1.0.6
使用ライブラリ:なし
スケッチの仕様
Arduino IDE がコンパイルする際は、作業ルートフォルダにあるソールファイルを連結します。
ルートフォルダと同じ名前のinoファイルを先頭に、アルファベット順にファイルを連結するようです。
ただし、サブフォルダの中に入っているinoファイルは読み込まれないため、階層を分けてファイルを置くことはできません。
単純にソースコードを連結しているので、分割する時は新しくファイルを追加し、コピペすれば良いということになります。
ただし、ソースコードに記載する順序が影響するものについては、連結するファイルの順番は理解しておく必要がありそうです。
スケッチファイル追加方法
Arduino IDE 内で新しいタブ追加
画面右上のタブ欄右にある「・・・」をクリックし、「新しいタブ」をクリックします。
ファイル名を入力する欄が表示されるので、ファイル名を入力します。
今回は「sketch2」とします。
新しく「sketch2.ino」が表示されました。
拡張子なしで入力すると、自動的に拡張子はinoになります。
ファイルエクスプローラで確認すると、ファイルが追加されているのがわかります。
ファイルエクスプローラでファイル追加
ファイルエクスプローラでファイルを追加してみます。
「sketch3.ino」を追加します。
すると、Arduino IDE でも「sketch3.ino」タブが表示されました。
新しくファイルができれば、自動的に読み込んでいるようです。
動作確認
「test_sketch.ino」に以下のコードを記載して動作してみます。
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
}
void loop() {
// put your main code here, to run repeatedly:
function_sketch2();
function_sketch3();
delay(5000);
}
void function_sketch2() {
Serial.println("function_sketch2");
}
void function_sketch3() {
Serial.println("function_sketch3");
}
5秒おきに、「function_sketch2」と「function_sketch3」が表示されます。
これを分割してみます。
関数「function_sketch2」と「function_sketch3」を各ファイルに振り分けてみます。
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
}
void loop() {
// put your main code here, to run repeatedly:
function_sketch2();
function_sketch3();
delay(5000);
}
void function_sketch2() {
Serial.println("function_sketch2");
}
void function_sketch3() {
Serial.println("function_sketch3");
}
これをコンパイルして動作させてみても同じようになれば成功です。
おわりに
スケッチの仕様については、以下のサイトを参考にしています。
https://arduino.github.io/arduino-cli/0.36/sketch-specification
コメント