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

関数とは何か?
関数は、特定のタスクを実行するためのコードブロックです。
関数を使うことで、同じコードを何度も書かずに再利用でき、プログラムの構造を明確にすることができます。
関数を使うメリット
関数を使うことで得られる主なメリットは次の通りです。
- コードの再利用:同じコードを何度も書かずに再利用できるため、プログラムが効率的になります。
 - 可読性の向上:関数を使うことで、プログラムの構造が明確になり、読みやすくなります。
 - デバッグの容易さ:関数ごとに独立してテストやデバッグを行うことができるため、エラーの特定が容易になります。
 
関数の基本構文
// 関数の定義
戻り値の型 関数名(引数の型 引数名, ...) {
  // 関数の本体
  return 戻り値;
}
// 関数の呼び出し
関数名(引数);引数が複数ある場合は、「,」で区切って記述します。
戻り値や引数が無い場合は、関数定義の際にvoidを記述します。
// 戻り値・引数が無い場合
// 関数の定義
void 関数名(void) {
  // 関数の本体
}
// 関数の呼び出し
関数名();例えば、速度の変数moveSpeedを変更する関数は、次のように定義できます。
void ChangeSpeed(int spd)
{
  moveSpeed = spd;
}戻り値と引数
関数は戻り値と引数を持つことができます。
- 戻り値:
関数が実行された後に返される値です。
戻り値の型を指定することで、関数の結果を他の部分で利用できます。
戻り値がない場合はvoidとします。 - 引数:
関数に渡される入力値です。
関数は引数を使って処理を行います。 
例えば、以下の関数は2つの整数を引数に取り、その和を戻り値として返します。
int add(int a, int b) {
  return a + b;
}mBotの関数を使ったプログラム
mBotのプログラム内で関数を使ってモーターを制御する方法を見てみましょう。
以下は、モーターを前進、後退、停止させる関数を使ったプログラムです。
#include <MeMCore.h>
MeDCMotor motorL(M1);
MeDCMotor motorR(M2);
void setup() {}
void loop() {
  moveForward(255, 1000);  // mBotを1秒間前進させる
  stopMotors(500);         // mBotを0.5秒停止
  moveBackward(255, 1000); // mBotを1秒間後退させる
  stopMotors(500);         // mBotを0.5秒停止
}
// mBotを前進させる関数
void moveForward(int speed, int duration) {
  motorL.run(-speed);
  motorR.run(speed);
  delay(duration);
}
// mBotを後退させる関数
void moveBackward(int speed, int duration) {
  motorL.run(speed);
  motorR.run(-speed);
  delay(duration);
}
// mBotを停止させる関数
void stopMotors(int duration) {
  motorL.run(0);
  motorR.run(0);
  delay(duration);
}このプログラムでは、moveForward, moveBackward, stopMotorsの3つの関数を定義し、loop関数内でこれらを呼び出してmBotのモーターを制御しています。
引数として「mBotの速度」「動作時間」を渡すことで、汎用性のある関数とすることができます。
関数を使うことで、コードの再利用性が向上し、プログラムがシンプルで分かりやすくなることが理解できたかと思います。
まとめ
今回は、関数の基本概念と、その作成および活用方法について学びました。
関数を使うことで、プログラムの効率を上げ、コードをより整理しやすくなります。
mBotのプログラムでも関数を使って、より複雑な動作をシンプルに実現することができるでしょう。
次回は、『配列』について学びます。
mBlockを使ったmBotのプログラミング方法を丁寧に解説していておススメです。
mBotを使用した拡張的な遊びは『mBotでものづくりをはじめよう』が参考になります。mBotのパーツを段ボールと組み合わせてオリジナルのロボットを作るといったような拡張的な遊びが楽しめます。

  
  
  
  


					
					
Arduino IDEからmBotへ書き込みして、動作を確認してみましょう。