ArduinoのIDEを起動すると.inoファイルが自動で作成されますが、ヘッダーファイルやC言語のファイルを追加したいときがあると思います。
今回はArduinoで複数のファイルを作成する方法と作成したC++ファイルからArudinoライブラリを呼び出す方法を解説します。
ファイルの作成
ヘッダーファイル作成
まずはヘッダーファイルを追加していきます。
Arduino IDEを開いたら、[▼]のボタンをクリックします。
[新規タブ]を選択します。
新規ファイル名を入力して[OK]ボタンをクリックします。
これで追加できました。
C言語ファイルの作成
ヘッダーファイルの作成と同じ要領で、ファイル名を.cにするとC言語のファイルを追加できます。
ただし、C言語でファイルを追加してしまうとコンパイルエラーが発生するため、C++で追加したほうがいいです。
今回は.cppの拡張子で追加します。
コードの実装と実行結果
コードの実装
今回はint型の配列を渡すと合計値を返す関数test.cppに実装します。
まずは、メイン関数があるファイルです。
#include"test.h"
void setup() {
int tempArray[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Serial.begin(9600);
// 配列の合計を表示する
int count = Sum(tempArray, 10);
Serial.print(count);
}
void loop() {
}
続いて、test.hです。
#ifndef TEST_H
#define TEST_H
int Sum(int* data, unsigned char dataSize);
#endif
最後にtest.cppです。
#include "test.h"
int Sum(int* data, unsigned char dataSize){
int sum = 0;
for (int i = 0; i < dataSize; i++) {
sum += data[i];
}
return sum;
}
実行結果
実行結果です。
しっかり、test.cppのSum関数が呼び出せています。
作成したC++ファイルからArduinoライブラリを呼び出す
つづいて、追加したC++のファイルからArduinoのライブラリ関数を呼び出す方法を紹介します。
Arduinoライブラリには、シリアル通信の関数やSPI通信のライブラリなど便利なものがたくさん入ってます。
Arudinoライブラリの関数などは、こちらのサイトを参考にしてください。
また、inoファイルで作成したファイルならこの手順は必要ないです。
呼び出し方法
呼び出すのは簡単です。
Arduino.hをインクルードするだけです。
今回は先ほどのtest.cppを改修して呼び出します。
#include <./Arduino.h>
#include "test.h"
int Sum(int* data, unsigned char dataSize){
int sum = 0;
for (int i = 0; i < dataSize; i++) {
sum += data[i];
// 計算経過を表示する
Serial.println(sum);
}
return sum;
}
メイン関数も少し改修して実行したいと思います。
#include"test.h"
void setup() {
int tempArray[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Serial.begin(9600);
// 配列の合計を計算する
int count = Sum(tempArray, 10);
}
void loop() {
}
実行結果
実行結果です。
ばっちり呼び出せてます。
まとめ
今回はArduinoで複数のファイルに分割する方法と、分割したC++ファイルからArduinoライブラリを呼び出す方法をご紹介しました。
Arduinoは簡単な組み込みシステムを検証するときに重宝します。しかし、メイン部分で膨大なコードを記述してしまうと、本来検証したいこと以前にトレースが難しくなってしまいます。
Arduinoもソースコードを分けて記述することができますでので、是非お試しください。