今回は、mBotプログラミングシリーズ(Arduino編)の第12回です。
この回では、Arduino IDEを使って配列を作成し、mBotのプログラムで活用する方法を学びます。
配列を使うことで、複数のデータを効率的に管理し、プログラムをより分かりやすく整理することができます。
全講座の一覧はこちら
目標
- 配列とは何かを理解する。
- 配列を作成し、使う方法を学ぶ。
- mBotのプログラムで配列を活用する。
Arduinoプログラムファイルの作成
ここでは、プログラムファイルをイチから作成していきます。
Arduino IDEを立ち上げ、ファイル -> 新規スケッチで真っ新なプロジェクトを用意しましょう。

配列とは何か?
配列は、同じデータ型の複数の要素を格納するためのデータ構造です。
配列を使うことで、複数のデータを一括して管理し、プログラムの構造を明確にすることができます。
例えば、以下のようなデータを配列として扱うことができます:
- 光センサーのデータ(例:345.5, 687.0, 954.8)
- 操作手順のリスト(例:「前進」「回転」「停止」の速度設定)

配列を使うことで、プログラムをより効率的に構築することが可能です。
配列の基本構文
// 配列の宣言と初期化
データ型 配列名[要素数] = {値1, 値2, ..., 値N};
例えば、整数型の配列を宣言し初期化する場合は以下のようになります。
int numbers[5] = {10, 20, 30, 40, 50};
配列の個数の定義とゼロ番目の考え方
配列の要素数(個数)は、配列を宣言する際に定義します。
配列のインデックスは0から始まります。つまり、最初の要素はゼロ番目のインデックスを持ちます。
上記で示したnumbers[5]
の配列は、図で表現すると次のようになります。

配列を使うメリット
配列を使うことで得られる主なメリットは次の通りです。
- データの一括管理: 複数のデータを一つの変数で管理できるため、プログラムが効率的になります。
- 可読性の向上: 配列を使うことで、プログラムの構造が明確になり、読みやすくなります。
- 柔軟な操作: ループを使って配列の要素に一括して操作を加えることができ、柔軟なプログラムが作成できます。
配列を使った簡単なプログラム
#include <MeMCore.h>
MeLightSensor lightSensor(PORT_6); // 光センサーのオブジェクトを作成
int lightValue[24]; // 光センサー値を格納する配列
void setup() {
for(int i=0; i < 24; i++){
lightValue[i] = lightSensor.read();
delay(1000);
}
}
void loop() {}
このプログラムでは、光センサーの値を1秒おきに合計24秒分、配列に保存しています。
このプログラムは、1日の気温を記録しておくプログラムに応用することができます。
1時間おきに、合計24時間分の気温をリストに保存して、後から気温推移を確認することが可能です。
mBotの関数を使ったプログラム
mBotのプログラム内で配列を使ってモーターを制御する方法を見てみましょう。
以下は、配列を使ったライントレースのプログラムです。
#include <MeMCore.h>
MeLineFollower line(PORT_2); // ライントレースセンサーのオブジェクトを作成
MeDCMotor MoterL(M1);
MeDCMotor MoterR(M2);
uint8_t val; // ライントレースセンサー読み出し値格納用変数
int speedl[4] ={-150,100,-100,150}; // mBot左タイヤのスピード
int speedr[4] ={150,100,-100,-150}; // mBot右タイヤのスピード
void setup() {}
void loop() {
val = line.readSensors(); // ライントレースセンサーの値をvalに格納する
MoterL.run(speedl[val]); // 左タイヤを動かす
MoterR.run(speedr[val]); // 右タイヤを動かす
}
//ライントレースセンサーの値
// 0:両方とも黒 ⇒ 前進
// 1:左が黒、右が白 ⇒ 左回転
// 2:左が白、右が黒 ⇒ 右回転
// 3:両方とも白 ⇒ 後退
このプログラムでは、左タイヤ用speedl
[]と右タイヤ用speedr
[]の2つの速度定義配列を用意し、ライントレースセンサー値に応じた速度を格納します。
それぞれの関係は次の通りです。
センサー値 val | 左タイヤ速度speedl [] | 右タイヤ速度speed r[] | mBot動作 |
---|---|---|---|
0 | -150 | 150 | 前進 |
1 | 100 | 100 | 左回転 |
2 | -100 | -100 | 右回転 |
3 | 150 | -150 | 後退 |
これにより、ライントレースのプログラムが非常に簡潔になったことが理解できると思います。
配列を使うことで、データを効率的に管理し、プログラムをより分かりやすく整理することができます。
まとめ
今回は、配列を使ってセンサーデータを保存する基本的なプログラムと、ライントレースプログラムを簡潔にする方法について学びました。
配列を使うことで、複数のデータを効率的に管理し、プログラムをより分かりやすく整理することができます。mBotのプログラムでも配列を使って、より高度な制御を実現することができるでしょう。
今回で、mBotプログラミング例~基本編~は終了となります。
~応用編~にも是非挑戦してみてください!
全講座の一覧はこちら
mBlockを使ったmBotのプログラミング方法を丁寧に解説していておススメです。
mBotを使用した拡張的な遊びは『mBotでものづくりをはじめよう』が参考になります。mBotのパーツを段ボールと組み合わせてオリジナルのロボットを作るといったような拡張的な遊びが楽しめます。
Arduino IDEからmBotへ書き込みして、動作を確認してみましょう。