LEGO マインドストーム【MINDSTORMS】EV3
Loop Block
ループブロック <概要>
使用例を見る
ループブロックは、プログラミングブロックのシーケンスを保持できる容器です。保持しているブロックのシーケンスを繰り返すことができます。ブロックを永久的、一定回数、またはセンサー値のテストや他の条件が真となるまで反復させることを選択することができます。
ループ内のブロックだけが反復されます。ループの終了後、プログラムはループ後に続くブロックにより継続してゆきます。
モード セレクターを使って、ループの反復方法を制御します。異なるモードにより、ループを終了させる条件を指定します。例えば、ループを一定回数反復させたり、センサー データ値が一定のしきい値に達するまで反復させたり、あるいは永久的に反復させることができます。利用できる入力内容はモードごとに異なります。モードについては以下に記載しています。
ループブロックの最上部にあるループ名フィールドにループの名前を入力することができます。この名前は、ループ中断ブロックによりループを終了させる別の方法を提供するために利用されます。
ループ内のブロックは、カウントの出力を用いてループが反復した回数を表示することができます。
*ブロックをループ内で動作するようドラッグします。ループブロックは、内部のブロックの場所を確保するため展開します。
– 使用例 –
①
このプログラムはプログラムが停止されるまで直線/旋回シーケンスでロボットを何度も作動させます。
*EV3ブロックの「戻る」ボタンを使ってプログラムを停止します。
②
このプログラムはタッチセンサーが押された際にはいつでもEV3ディスプレイの閉じた口を表示し、そうでない場合には開いた口を表示します。このループはスイッチブロックのセンサー値のテストを継続的に繰り返します。
③
このプログラムはロボットに「Hello」と1回発声させ、次に6回「Go」、そして「Bravo」を1回発声させます。ループブロックには1個のサウンドブロックが含まれており、6回繰り返すよう設定されています。
④
このプログラムは、タッチ センサーが押されるまで、またはカラー センサーが黒色を検知するまで(いずれか早い方)ロボットを前方に動かします。ロジック操作ブロックの出力は、ループの真になるまでの入力のために利用されます。ループが終了するとロボットは停止します。
*以下に記載されるようにセンサーモードを用いて、1つのセンサーだけを対象とする多くのセンサーテストをループブロックで直接実施することができます。
⑤
このプログラムはカラーセンサーが50未満の反射光の強さを検出するまで 3つの異なる音を繰り返しながらロボットを前方に動かし、それが済むとロボットを停止させます。
*センサーのしきい値はループのシーケンスの終了時にのみテストされます。上記の例では、カラーセンサーがループの途中で暗い色をちょっと通過した場合、ロボットはこれを確認できず停止もしません。
⑥ ループインデックス出力を使用する
ループブロックの開始時点のループインデックスの出力は、ループのシーケンスが実行された回数を伝えます。ループ内のループインデックスを使って、ループが反復される度にループのシーケンスに何か異なることを実行させることができます。
初回からループまでのループインデックスは0となり、ループが繰り返されるたびに1ずつ増加します。
このプログラムはタッチセンサーのバンプ(押され、そして離れた)回数のカウントをEV3ディスプレイに表示します。ループ内の待機ブロックは反復前に各タッチセンサーのバンプがあるまでループを待機させ、カウントが表示ブロックのテキスト入力のために利用されます。
⑦ ループのサイズ調整を行う
ループブロックは通常はドラッグした新規プログラミングブロックのスペースを確保するために自動的に展開されます。必要であればループブロックを手動でサイズ調整することもできます。ループをサイズ調整するにはループブロックを選択し、範囲外として表示されているサイズ調整ハンドルをドラッグします。
このループブロックは内部の2番目のブロックのシーケンスのスペースを確保するためサイズ調整されます。