Arduinoのソフトウェア(mugbot_arduino)のコード解説

Arduinoのソースコード(mugbot_arduino)の解説です。
このソースコードはArduino専用の言語で書かれており、拡張子は「ino」になっています。
server(mugbot_server)から送られてきたコマンドを読み取って、そのコマンドを実行します。LEDやサーボが動くのはこのソースコードの働きです。

 

それぞれのLEDとサーボの初期設定をしています。
例えば、「int l_mouse=7;」は「l_mouse」を「7」と設定するということです。ソースコード上で「l_mouse」と入力されているところは7という値を代入することを定義しています。
また、同じように「int eye_default=90;」は目のサーボの正面位置を90に設定し、ソースコード上で「eye_default」と入力されているところは90という値を代入することを定義しています。

 

 

setup( )はスケッチがスタートしたときに1度だけ呼び出される部分で、ピンモードやライブラリの初期化などを行っています。

「attach」というのは、「サーボ名.attach(ピン番号)」でサーボを割り当てるピンを設定しています。
(例 eye_servo.attach(2)というのは、eye_servoは2番ピンに接続されているということです。)

「pinMode」というのは、「pinMode(ピン番号, 入力もしくは出力)」で、そのピンが入力ピンなのか出力ピンなのかを設定しています。
(例 pinMode(l_eye, OUTPUT)というのは、l_eye(上で定義したように11)ピンはOUTPUT(出力)に設定するということです。)

「analogWrite」というのは、「analogWrite(ピン番号,値)」で、そのピンに接続されているLEDをどのくらいの明るさにするのかを設定しています。
(例 analogWrite(l_eye,eye_light_default)というのは、l_eye(上で定義したように11)ピンをeye_light_default(上で定義したように50)の明るさに設定するということです。)

「digitalWrite」というのは、「digitalWrite(ピン番号,HIGHまたはLOW)」で、そのピンに接続されているLEDを5Vにするのか0Vにするのかを設定しています。
(例 digitalWrite(l_mouse, LOW)というのは、l_mouse(上で定義したように7)ピンをLOW(0V=光らせない)に設定するということです。)

「write」というのは、「サーボ名.write(角度)」で、サーボをどの角度にするのか設定しています。
(例 eye_servo.write(eye_default)というのは、eye_servoをeye_default(上で定義したように90)に向けるということです。)

 

 

loop( )には実行したいプログラムを書きます。その名のとおり、この部分に書かれた内容は繰り返し実行されます。
「if(serial.available( )>0)」というのは、もしも受信データがあるならば以下の内容を実行するという意味です。
「ch = serial.read();」で受信したデータを読み込み、その値を「ch」に代入します。
「switch文」で「ch」の値がそれぞれの「caseの値」だった場合、その「case」の内容を実行します。(例 「ch」の中身が0〜9の数字だった場合、その数字を順番に読み込んで、「1・0・0」というぶつ切りの数字ではなく、「100」のようにひとつの数字に変換して「g」に代入する。)breakまでいくとswitch文を抜けて、ループに戻ります。

 

 

もしも「x」を受け取った場合は、サーボを 「g」の値の角度に向け、少し待った後に「g」を0に初期化してループに戻ります。
「delay」というのはその時間の分だけ待つということです。

 

 

もしも「y」を受け取った場合は、サーボを 「g」の値の角度に向け、少し待った後に「g」を0に初期化してループに戻ります。

 

 

もしも「z」を受け取った場合は、LEDの明かりを 「g」の値にし、少し待った後に「g」を0に初期化してループに戻ります。

 

 

「発話」の動作

もしも「t」を受け取った場合は、口のLEDを点灯させ、目を上下に動かします。
「for ( pos = eye_default; pos < 110; pos += 1)」というのは初期値がeye_default(90)で、その90に数字を1ずつ足していき、posの値が110を超えるまで{ }の中の内容を実行するということなので、posが110になるまで、eye_servoの角度をposの値にするということです。
他のfor文も値は違いますが同じことをしています。
ただし、pos -= 1の場合は数字を1ずつ足していくのではなく、減らしていきます。

 

 

「初期値に戻る」の動作

もしも「n」を受け取った場合は、全ての値を初期設定値に戻します。

 

 

「笑う」の動作

もしも「l」を受け取った場合は、口を点灯させ、目を上下運動させます。上下運動が終わったら、口の点灯を止めます。

 

 

「悲しい」の動作

もしも「s」を受け取った場合は、目を下げ、目の明るさを小さくしていきます。終わると元の状態に戻ります。

 

 

「はい」の動作

もしも「h」を受け取った場合は、目を上下に動かします。

 

 

「いいえ」の動作

もしも「f」を受け取った場合は、首を左右に動かします。

 

 

「ウィンク」の動作

もしも「w」を受け取った場合は、目を交互に点灯させます。

 

 

「びっくり」の動作

もしも「b」を受け取った場合は、目を上げ、目の光を大きくします。終わると元の状態に戻ります。

 

 

「ハイテンション」の動作

もしも「e」を受け取った場合は、口を点灯させ、目を交互に点灯させ、首を上下左右に動かします。終わると元の状態に戻ります。

 

 

「上記以外のコマンドが入力された時」の動作

上記以外を受け取った場合は、初期設定値のままにします。

以上でArduinoのソースコード(mugbot_arduino)の解説を終了します。