前回 Microbit:DC motor制御(DFROBOTボード)、DFRobotのDFR0548(4chDCモータドライバー)を使ったロボットの無線制御について紹介しました。
今回は、そのプログラムを改良して、モータースピードを変えられるようにしました。
送信側と受信側のそれぞれのプログラムです。
送信側
送信側コード解説
最初だけ
のブロック中に無線グループの設定
と無線で送信
でspeedの値を送信ます。
speedは0から255の値ですが、今回255をHighSpeed、125をLowSpeedとしました。
ボタンA
の中に無線でspeedの値を送信の値として125をセットします。
ボタンB
も同様に255をセットします。
これで、Aボタン、Bボタンを押すことでspeedを変えることができます。
後は、前回の記事と同じように、各ジェスチャーに対応するコントロール番号を無線で送信します。
受信側
受信側コード解説
最初だけ
のブロック中に無線グループの設定
を行います。
送信側の最初だけブロックの中に入っていたspeedの値を受信します。
受信した値をspeedという変数に格納します。
※変数はスコープなどが気になりますが、ここではGlobal変数として取り扱っています。Global変数は、書き込むところを1か所にするのが理想です。
また、各ジェスチャーに対応して送られてくる番号に対応したアクションを行います。
アクション(例えば:前進「Forward」)について、その動作をまとめた関数を作ります。
これまで、関数に引数は取れなかった?のですが、引数が取れるようになりましたので、引数を入れた関数を作成します。
数のところにspeedで受け取った値が入ることになります。
※関数を作成すると自動的にブロックが一番上に配置されます。JavaScriptのコードを見ればわかると思いますが、上からプログラムが実行されます。
※右上にあるボタンAが押されたとき
のブロックは、受信プログラムが動作するかのテスト用に作ったものなので、不要ならば削除してください。