【EV3 Classroom入門】5-11 メッセージを受け取った時の処理

デフォルトアイキャッチ

みなさん、こんにちは。さいたま市のプログラミング教室「ツクリウム」です。

こちらはEV3 Classroomの入門記事になります(後継のSPIKEプライムにも役立つかと思いますので参考にしてみてください)。さて、今回のプログラムはインテリジェントブロックのボタンのイベント処理の解説です。


5-11 (指定したメッセージ)を受け取ったとき

EV3 Classroom 5-11 (指定したメッセージ)を受け取ったとき

解説:5-12や5-13の命令ブロックで送られたメッセージを受け取った時のイベント処理を行います。メッセージは各スタックに送ることができ、各スタックではそれぞれ異なる処理を記述できます。いわゆるこれらの命令ブロックにより並列処理を行うことができます。注意が必要なのは初期状態が「メッセージ1」と日本語の全角文字になっていることです。このままだと動作しませんのでメッセージ名は半角英数に必ず変えてください。(注:バージョンアップにより改善されたようです。)

例:
プログラムがスタートすると、タイマーをリセットし、メッセージ(mes1)をそれぞれのスタックに送ります、その後すぐに画面にタイマーの値を表示し続けます。
一方で並列処理で、ポートAにつないでいるアームのMモーターを前後に3秒より大きくなるまで続け、同時にステアリングによる前後移動をタイマーが5秒より大きくなるまで続け、他のスタックを止めます。その結果、画面表示されていたタイマー表示が止まりその値が表示されます(この場合、2番目のスタックで前後に1回転ずつしているのでその処理が終わらないとループを抜けないため5秒キッチリではなく終了する時間差があるわけですね)。

EV3 Classroom 5-11 (指定したメッセージ)を受け取ったとき プログラムの例

5-12 (指定したメッセージ)を送る

EV3 Classroom 5-12 (指定したメッセージ)を送る

解説:メッセージを送ります。この命令ブロックは5-13と違うのはメッセージを送ったあとすぐに次の処理に移っていくことです。そのため同時進行で複数の処理を行う(=並列処理)ときによく使うブロックです。ただし実機で確認した限りでは厳密な意味での並列処理ではなく疑似的なものと思われます。なおメッセージ名を必ず半角英数にすることを忘れないでください。デフォルトの「メッセージ1」というメッセージ名ではエラーになるようです。
例:参照5-11

5-13 (指定したメッセージ)を送って待つ

EV3 Classroom 5-13 (指定したメッセージ)を送って待つ

解説:メッセージを送ります。5-12の命令ブロックと異なるのはメッセージを送った全てのスタックが終了するまでそれ以降の処理を行うのを待っていることです。5-12のブロックは並列処理で用いることが多いのですが、こちらのブロックはメッセージの受け取り先の処理が終わるまで待つことから、サブルーチンの呼び出しに使うことが多いかと思います。なおメッセージ名を必ず半角英数にすることを忘れないでください。

例:(モーターが1回転するににかかった時間を表示しています)
プログラムがスタートすると、タイマーをリセットし、メッセージ(mes1)を送ります。
メッセージ(mes1)を受け取ったら、前方に1回転モーターを回転させます(このスタックは終了します)
メッセージ(mes1)を送ったスタックが全て終了したため、画面にタイマーの値を表示します。

EV3 Classroom 5-13 (指定したメッセージ)を送って待つ プログラムの例

入会、または、体験会のお申込み

プログラミング教室「ツクリウム」ではスクラッチやPythonなどを学ぶ、小学生、中学生、高校生くらいまでの初心者向けの講座を通学形式やオンライン形式で開講しています。
お問いあわせ・ご入会・体験会のお申込みは下記のリンクからお願いいたします。

画像をクリックするとお問い合わせページにジャンプします。

お問い合わせアイコン