カラーボックスでトレーニングロボットに指示を与えるプログラム ~レゴマインドストームEV3~
Contents
色でトレーニングロボットに指示を与えるとは
教育用レゴマインドストームのトレーニングロボットにカラーセンサーを取り付ける。
カラーセンサーで読み取った色によってトレーニングロボットを制御するプログラムを作成する。
- 青:前進
- 赤:後退
- 緑:左回り
- 黄:右回り
上記の色以外は読み込まない。
またその際に色を読み取って直ぐにトレーニングロボットを動かすのではなく一旦配列に蓄えた後にまとめて保存した色にしたがってコマンドを実行するプログラムにする。
プログラム全体イメージ
プログラムは
- 色を読み取って配列に蓄える
- 読み取った色別に異なる動作をさせる
の2つのロジックから構成されている。
尚、記事の最後にプログラミングと実際に動かした時の動画を載せているので確認してみて欲しい。
プログラム全体イメージ
プログラム全体とそれぞれの処理内容は以下の通り
1 | プログラムを開始する |
2 | 3~8を4回ループする |
3 | タッチセンサーが押されるまで待機 |
4 | カラーセンサーで青、緑、黄、赤の色が読み取られまで待機 |
5 | 変数を用意 |
6 | 4で読み取った色(数値)を数値配列に書き込む |
7 | 書き込まれる数値配列 |
8 | クリック音の再生 |
9 | Ready音の再生 |
10 | 11~17を4回ループする |
11 | 7で数値を保存した数値配列を読み込む |
12 | 11の数値配列を順番に読み込んで値を13に出力する |
13 | 12の出力結果によって処理を4種類に分岐する |
14 | 13の値が2の時、トレーニングロボットを前進させる |
15 | 13の値が3の時、トレーニングロボットを左旋回させる |
16 | 13の値が4の時、トレーニングロボットを右旋回させる |
17 | 13の値が5の時、トレーニングロボットを後退させる |
使用したブロック
今回使用したブロックは以下の8種類。
ループブロック
ループ内に配置されたブロックを右側の条件に一致するまで繰り返す。
ループを4回繰り返す
ループインデックス※をデータワイヤーで出力する。 ※ループインデックスにはループ回数がセットされている インデックスは0から始まるので1回目=0になるので注意 |
待機(タッチセンサー)ブロック
指定された条件になるまで待機するブロック。
今回は「タッチセンサーが押されるまで」待機する事によりプログラムの”一時時停止”的な意味合いで使っている。
タッチセンサーがバンプ(押される)まで待機する
|
待機(カラーセンサー)ブロック
指定された条件になるまで待機するブロック。
今回は「カラーセンサーが特定の種類の色を読み取るまで」待機する為に使っている。
カラーセンサーが青、緑、黄、赤の4種類いずれかの色を読み取るまで待機する
|
変数ブロック
テキスト、数値、ロジック、数値配列、ロジック配列を格納(書き込み)、読み込みする事ができる。
今回は読み取った色を合計4つまで数値配列として保存する。
数値配列のイメージ図
数値配列を変数(colorarray)から読み込む
| |
数値配列を変数(colorarray)に書き込む
|
配列操作ブロック
配列の操作を行うためのブロック。
今回はループインデックス(0~3)をインデックスとして値にカラーセンサーで読み取った色(数値)を書き込み/読み込みをする。
尚、配列操作ブロックの機能詳細についてはこちらの記事を参照。
配列にカラーセンサーで読み取った色(数値)を書き込む
| |
数値配列からカラーセンサーで読み取った色(数値)を読み込む
|
音ブロック
様々な音を再生する為のブロック。
クリック音を再生する カラーセンサーで色を読み取った後、何の操作音も無いと読み取り処理が実行されたかどうかが分かりにくいためクリック音を再生している
| |
Ready音を再生する カラーセンサーで色を4回読み取った後、色の読み取りループが終了した事が分かる様にReady音を再生している
|
スイッチブロック
条件によって処理を分岐することができるブロック。
センサーの測定値やロジック(”真” or ”偽”)など様々な条件を指定する事ができるが今回は数値(#)での分岐を使用する。
数値配列から出力された色(数値)を元に色別に処理を分岐する
|
タンクブロック
Lモータを使ってトレーニングロボットの前進、後退、右回り、左回りを制御するブロック。
実際に動かしてみた動画
プログラミングの様子と実際にカラーブロックで色を読み込んで正しく動作するかどうかを試してみた動画。
最近のコメント