LEGOテクニック

LEGO マインドストーム【MINDSTORMS】EV3

Switch Block

スイッチ ブロック <概要>





スイッチブロックは、プログラミングブロックの2つ以上のシーケンスを含むことができる容器です。各シーケンスは、条件と呼ばれます。スイッチの開始時点のテストで、条件を実行するかどうか判断します。スイッチが実行される度に条件を一つだけ実行します。
 
ここに示されるスイッチのテストは、センサーデータ値やデータワイヤーの値に基づいてどの条件を実行するか判断することができます。一つの条件が選択され実行された後、プログラムはスイッチの後に続くブロックを継続してゆきます。
 
*スイッチはセンサーデータ値やデータワイヤーが一定の値に達するまで待機しません。スイッチ ブロックが開始するとすぐにテストが実行され、条件の一つが選択され、テスト後に直ちに実行されます。

– 使用例 –

以下のプログラムはロボットに「Touch」と言わせて、タッチセンサーが押されたかどうか確認するテストを実施します。押された場合には、真(最上部)の条件が実行され、ロボットは「Thumbs up」を表示し、「Yes」としゃべります。タッチ センサーが押されていない場合、偽(最下部)の条件が実行され、ロボットは「Thumbs down」を表示し、「No」としゃべります。スイッチの後、ロボットは「Thank you」としゃべります。


タッチセンサーはロボットが「Touch」と言い終えるとすぐにテストされます。その瞬間にセンサーが押されている場合、スイッチは真の条件を実行し、そうでない場合は偽の条件を実行します。

・ スイッチはセンサーデータ値やデータワイヤーが一定の値に達するまで待機しません。スイッチブロックが開始するとすぐにテストが実行され、条件の一つが選択され、テスト後に直ちに実行されます。

・ 上記のプログラムでテスト前に(またはプログラム開始前でも)タッチ センサーを押したままにして、スイッチが必ず真の条件を実行するようにすることができます。センサーを押すために必要な時間を確認して、その時間内にセンサーを押すことにより、ロボットに「Yes」と言わせることができます。

・ その状況でロボットに何もさせたくない場合、スイッチの条件を空白のままにしておくことができます。上記のプログラムの偽の条件から2個のブロックを削除し、何が起こるか確認してみてください。


このプログラムではスイッチ ブロックは「カラー センサー – 比較 – 反射光の強さ」モードを使って、反射光の強さが50未満であるかどうかをテストします。50未満である場合に「Low」を表示し、そうでない場合には「High」を表示します。スイッチはディスプレイが新規のセンサーのテストに応じて継続的に更新されるようループ内で繰り返されます。

*センサーのテストは極めて迅速に実施されます。上記の例のループがなくてもプログラムはセンサーを一度だけはテストし、気づかないだけ迅速にテストを終了します。

③ テキストモード

テキストモードでスイッチは各値の条件により、テキストの入力の値を指定する2つ以上のテキスト値と比較します。テキスト入力と一致する値を持つ条件が実行されます。一致する値がない場合、初期条件が実行されます。


複数の条件の作成に関する情報については、上記の複数の値をテストするをご確認ください。テキストモードの各条件には、条件値に直接入力できるテキスト値が備わっています。


例えば、テキストモードのスイッチはメッセージングブロックの出力を用いて、メッセージに応じて3つの異なる条件から選択します。

④ 数値モード

数値モードでスイッチは、各値の条件により、数値入力の値を指定する2つ以上の数値と比較します。数値入力と一致する値を持つ条件が実行されます。一致する値がない場合、初期条件が実行されます。


複数の条件の作成に関する情報については、上記の複数の値をテストするをご確認ください。数値モードの各条件には、条件値に直接入力できる数値が備わっています。


この例では、数値モードのスイッチは変数ブロックの出力を用いて3つの異なる条件から選択します。スイッチの初期条件は空白で「動作」変数の値が1、2、3以外のものである場合には、スイッチは何もしません。