はじめに
この記事はmicro:bitで戦車を操縦するための開発手順を初級・中級・上級に分けて紹介しています.使用機材や開発ステップはまとめで紹介しています.
*まとめの記事を読んではじめられた方は,戦車の車体を制作してから,この記事を読むと良いでしょう!
前回まで
中級編
中級編では,2台のmicro:bitを使って無線通信を行います.1台をコントローラーとして操作し,もう一台は戦車のモーターを制御します.初級編では,micro:bitのボタンを押した時にモーターに繋がっている端子に電気を流すことでモーターの制御を行いましたが,2台のmicro:bitで通信してモーターを制御するにはどのようなプログラムを作れば良いでしょうか?
考え方としては,送信側(コントローラー)のmicro:bitが「前に進め」という言葉を書いた手紙送ります.受信側(戦車)のmicro:bitは手紙を受け取ったら,その言葉を読み,前に進む動作をするという手順を行います,
送信側プログラム
それでは,まず送信側のプログラムを作って行きます.
こんな感じでAボタンが押されているときに"forward"(前進)というメッセージを送り,Bボタンが押されているときは"back”(後退)を送ります.なにも押されていないときは"stop"(停止)を送ります.無線のグループを送信側と受信側で同じに設定することで,決められら相手だけにメッセージを送る事が出来ます.
受信側プログラム
次に受信側,モーターを制御する側のプログラムを作っていきます.受信側のプログラムは初級編で作ったプログラムを少し改良して作っていきます.
まずは,このように無線のグループを送信側と同じにしてあげます.そして送信側かわ送られてくるメッセージを受け取るために,「無線で受信したとき」ブロックを使用します.ここで重要なのが"receivedString"の方を選ぶことです.同じようなブロックで"receivedNumber"のブロックがありますが,送られてくるメッセージが文字か数字によってこのブロックを使い分けます.今回は送られてくるのが文字なので,"receivedString"を使用します.
そして,ここで変数というものが出てきますが,今回は細かい説明は省きます.
メッセージを入れておく箱だと思っていて下さい.この箱には名前をつける事ができ,今回は"message"という名前をつけておきます.
次にこの3つのブロックを用意します.上から「論理」「変数」「文字列」のメニューにあるので,出してみましょう.
それらを合体させ,初級編で作ったプログラムをさらに合体させます.
初級編では,「Aボタンが押されているなら」という条件でしたが,今回は"messeage"が"forward","back","stop"ならに変更します.変数"message"に送られてくる文字を入れ,"message"の中身が"forward","back","stop"のいずれかなら,それに応じてモーターを制御するといった処理になります.送信側と受信側の送る文字が違っていたり,無線のグループが違っているとうまくメッセージを受け渡すことが出来ないので注意しましょう.
チャレンジ
前進・後退を無線で操作することが出来たら,次は,左右の旋回もやってみましょう!「前進」「後退」「右旋回」「左旋回」「停止」の5つのパターンを同時に操作することが出来ると良いでしょう.
でも,ボタンは2つしかありませんよね?そんなときは,他の入力機能を使ってみましょう!micro:bit には様々なセンサーが搭載され,そのセンサーを使ってプログラムを制御することが出来ます.まずは入力機能から**「端子P0がタッチされている」**を使ってみてはどうでしょうか.