ループブロック

ループブロックは、プログラミング ブロックのシーケンスを保持できる容器です。保持しているブロックのシーケンスを繰り返すことができます。ブロックを永久的、一定回数、またはセンサー値のテストや他の条件が真となるまで反復させることを選択することができます。

ループ内のブロックだけが反復されます。ループの終了後、プログラムはループ後に続くブロックにより継続してゆきます。
ヒントと豆知識
ブロックをループ内で動作するようドラッグします。ループブロックは、内部のブロックの場所を確保するため展開します。
ループ モードの選択


モード セレクター
入力
カウント出力
ループ名

モード セレクターを使って、ループの反復方法を制御します。異なるモードにより、ループを終了させる条件を指定します。例えば、ループを一定回数反復させたり、センサー データ値が一定のしきい値に達するまで反復させたり、あるいは永久的に反復させることができます。利用できる入力内容はモードごとに異なります。モードについては以下に記載しています。

ループブロックの最上部にあるループ名フィールドにループの名前を入力することができます。この名前は、ループ中断ブロックによりループを終了させる別の方法を提供するために利用されます。

ループ内のブロックは、カウントの出力を用いてループが反復した回数を表示することができます。詳細については、カウント出力を使用するをご確認ください。
モード
無限


無限モードでは、ループ内部のブロックは永久的に反復されます。ループ後に配置されたブロックを続行することはありません。
例 1
このプログラムは、プログラムが停止されるまで直線/旋回シーケンスでロボットを何度も作動させます。
ヒントと豆知識
EV3 ブロックの「戻る」ボタンを使ってプログラムを停止します。
例 2
このプログラムは、タッチ センサーが押された際にはいつでも EV3 ディスプレイの閉じた口を表示し、そうでない場合には開いた口を表示します。このループは、スイッチ ブロックのセンサー値のテストを継続的に繰り返します。
カウント


カウント モードでは、カウントの入力はループ内のブロックを繰り返す回数を指定します。
このプログラムは、ロボットに「Hello」と 1 回発声させ、次に 6 回「Go」、そして「Bravo」を 1 回発声させます。ループブロックには、1 個のサウンド ブロックが含まれており、6 回繰り返すよう設定されています。
時間


時間モードでは、ループの反復回数をの入力で指定することができます。時間はループの開始時点から測定されます。

時間制限は、ループのシーケンス終了時にのみテストされます。ループのシーケンスは常に最低一度は実行され、ループは時間の経過が未満の時間である場合に限り開始時点に戻ります。
ロジック


ロジック モードでは、シーケンスの最後に終点の入力が真になるまでループが繰り返されます。ループのシーケンスは常に最低一度は実行され、各ループの反復の最後に「終点」の入力がテストされます。

データ ワイヤーを使って、終点の入力をループ内のプログラミング ブロックのロジック出力に接続します。この出力は、ループを終了させたい時点を真とする必要があります。
このプログラムは、タッチ センサーが押されるまで、またはカラー センサーが黒色を検知するまで(いずれか早い方)ロボットを前方に動かします。ロジック操作ブロックの出力は、ループの終点の入力のために利用されます。ループが終了するとロボットは停止します。
ヒントと豆知識
以下に記載されるように、センサー モードを用いて、1 つのセンサーだけを対象とする多くのセンサー テストをループ ブロックで直接実施することができます。
センサー モード
ループ ブロックには、センサー データを読み取り、入力値と比較するいくつかのモードが含まれています。各センサー タイプ用に異なるモードが用意されています。センサー データのタイプのうちの一部をしきい値と比較したり、特定の値と比較することができます。
センサー データをしきい値と比較する
しきい値の入力があるモードで、ループブロックはしきい値比較の結果が真となるまでループ内でブロックのシーケンスを反復します。例えば、カラー センサーが指定したしきい値より低い反射光の強さの値を検出するまで、ループを繰り返すことができます。



モード セレクター
ポート セレクター
比較タイプの入力
しきい値の入力

モード セレクターを使ってしきい値の入力のあるセンサー モードを選択します。モードがポートを使用する場合、ポート セレクターを使ってポートがセンサーやモーターが接続されている EV3 ブロックのポートと一致することを確認します。

使用したい比較のタイプを比較タイプのリストから選択し、しきい値を入力します。

ループ内のブロックのシーケンスが終了する度、ループブロックはセンサー データを読み取り、しきい値との比較をテストします。このテストがその時に偽であれば、ループは反復します。このテストが真であればループは終了し、プログラムはループ後の次のブロックを続けます。

異なるセンサー タイプや提供されるデータの利用に関する詳細については、「センサーを使用する」ヘルプ記事をご確認ください。
このプログラムは、カラー センサーが 50 未満の反射光の強さを検出するまで 3つの異なる音を繰り返しながらロボットを前方に動かし、それが済むとロボットを停止させます。
ヒントと豆知識
センサーのしきい値は、ループのシーケンスの終了時にのみテストされます。上記の例では、カラー センサーがループの途中で暗い色をちょっと通過した場合、ロボットはこれを確認できず停止もしません。
センサー データを特定値と比較する
次のセンサー モードでは、ループはセンサー データを特定の入力値と比較することができます。センサー データが特定の入力値と等しくなるまで、ループが繰り返されます。
モード備考
インテリジェント ブロック ボタン 選択したボタンの一つが選択した動作を実行するまで、ループが繰り返されます。

インテリジェント ブロック ボタンを使用するをご確認ください。
カラー センサー - 色 選択した色の一つが検知されるまで、ループが繰り返されます。

カラー センサーを使用するをご確認ください。
赤外線センサー - 遠隔 赤外線ビーコンの選択したボタンの一つが押されるまで、ループが繰り返されます。

赤外線センサー遠隔モードを使用するをご確認ください。
タッチ センサー タッチ センサーが選択した状態になるまで、ループは繰り返されます。

タッチ センサーを使用するをご確認ください。
超音波センサー - 存在 超音波シグナルが検知されるまで、ループが繰り返されます。

超音波センサーを使用するをご確認ください。
メッセージング 特定のメッセージ タイプを受信するまで、ループが繰り返されます。

メッセージング ブロックをご確認ください。
ヒントと豆知識
センサーは、ループのシーケンス終了時にのみテストされます。センサー データが、ループのシーケンス実行中に特定の入力値と一致する場合、ループが停止しない可能性があります。
カウント出力を使用する
ループブロックの開始時点のカウントの出力は、ループのシーケンスが実行された回数を伝えます。ループ内のカウントを使って、ループが反復される度にループのシーケンスに何か異なることを実行させることができます。

初回からループまでのカウントは 0 となり、ループが繰り返されるたびに 1 ずつ増加します。
このプログラムは、タッチ センサーのバンプ(押され、そして離れた)回数のカウントを EV3 ディスプレイに表示します。ループ内の待機ブロックは、反復前に各タッチ センサーのバンプがあるまでループを待機させ、カウント表示ブロックのテキスト入力のために利用されます。
ループのサイズ調整を行う
ループブロックは、通常はドラッグした新規プログラミング ブロックのスペースを確保するために自動的に展開されます。必要であれば、ループブロックを手動でサイズ調整することもできます。ループをサイズ調整するには、ループブロックを選択し、範囲外として表示されているサイズ調整ハンドルをドラッグします。
このループブロックは、内部の 2 番目のブロックのシーケンスのスペースを確保するためサイズ調整されます。
入力と出力
ループブロックで利用できる入力内容は、選択したモードに応じたものになります。ブロックに値を直接入力することができます。あるいは、データ ワイヤーを使って他のプログラミング ブロックの出力から入力値を得ることができます。
入力タイプ備考
カウント 数値カウント モードでループを反復した回数です。
数値時間モードでループを繰り返した回数です。
終点 ロジックロジック モードでは、この入力が真の時にループを終了します。
比較タイプ 数値しきい値のあるセンサー モードの比較タイプです。
0:= (~と等しい)
1:≠ (~と等しくありません)
2:> (~超過)
3:≥ (~以上)
4:< (~未満)
5:≤ (~以下)
しきい値 数値しきい値のあるセンサー モードでセンサー データと比較する値
(個々のセンサー タイプの入力値)センサー データに関する詳細については、個々のセンサー タイプに関するヘルプをご確認ください。
ループブロックの出力は、ループが反復した回数です。出力を利用するには、ループ内もしくはループ後のプログラミング ブロックに接続するデータ ワイヤーを使用します。
出力タイプ備考
カウント 数値ループを完了した回数です。初回からループまではカウントは 0 となります。
ループ
クイックリンク