2017年8月8日

  • EV3ソフトウェア
  • EV3技術情報
  • ソフトウェア

EV3ソフトウェア 配列ブロックの使用方法【実践編】

教育版EV3ソフトウェアのプログラムにおける配列ブロックの使用方法を 簡単な具体例を用いてご紹介します。

 

配列の書き込み方法や読み取り方法など、基本的な操作方法はこちらをご覧ください。

 

◆例1
数値やテキストの変数は、1つの変数で1つの値しか記憶できないのに対し、配列は1つで複数の値を記憶しておくことができます。
そのため、あらかじめ複数の値を記憶しておき、それを利用してEV3を制御する際に便利です。

 

下図の例は、カラーセンサーの値を使って鳴らしたいメロディを配列に記憶させ、配列に記憶された値を読みとりながらメロディを鳴らします。

 

 

※1…EV3の中央ボタンを押す毎に1つ、配列に値を記憶します。
※2…配列の長さをくり返しの回数に指定すれば、配列の全ての値を読みとれます。
※3…ループインデックスを配列のインデックスに指定すれば、配列の値を順番に読み取れます。
※4…スイッチブロックの中には、各値に対応した音を鳴らす処理が入っています。1なら「ド」、2なら「レ」…のように、配列に記憶された値によって、それに対応した音を鳴らします。

 

 

◆例2
配列は、相対的に値を見る場合にも便利です。

 

下図のようなコースで、指定された番号の位置へ移動する場合で考えてみます。
・スタート地点は「0」です。
・移動する位置と順番は、事前にカラーセンサーの値によって指定することとします。
(例えば、「青(2)、赤(5)、緑(3)、黄(4)、黒(1)」と値を読みとった場合、EV3を「0(スタート地点)→2→5→3→4→1」の順に移動させます。)
・各番号の間隔は、EV3のタイヤ1回転分であることとします。

 

 

この課題のサンプルプログラムは下図のとおりです。

 

 

前半は、例1のプログラムに、読みとった値(行先とその順番)を表示する処理(※1)を追加しています。カラーセンサーの値によって行先を指定し、配列「ikisaki」に記憶します。

 

変数「pos(※2)」には、現在地を記憶します。移動を開始する前はスタート地点にいるので「0」です。

 

後半は、配列「ikisaki」に記憶された値にしたがって移動します。(※3)

 

配列「ikisaki」の値と、後半(※3)の値の変化は下表のようになります。

 

 

ループブロックで1回くり返すごとに、ループインデックス(④)の値が0から1ずつ増加します。これを配列のインデックス(①)に指定することで、配列ikisakiの値(②)が順番に読み取れます。(⑤)

 

移動量(⑦)は行先(⑤)から現在地(⑥)をひくことで求められます。
結果がマイナスの値になる場合は、後ろ向きに進みます。

 

移動が完了したら、行先(⑤)が現在地(⑥)とイコールになるので、現在地に行先の値を上書きします。(⑧)

 

これをくり返すことによって、事前に記憶した行先を順番に取得し、現在地との差から行先までの移動量を求め、移動することができます。

 

(2017/08/03現在)

SPIKE