![]() |
|
メインタスク
メインタスクでは、センサ1,2,3をそれぞれタッチセンサと回転センサに割り当てる設定とタッチセンサの検知する値を未加工(RAW)モードに設定しています。 ClearMessageで一旦格納している情報をゼロに戻します。 3つのタスク(straght、turning、back)をスタートさせます。 |
![]() |
タスク straght
タスク straghtでは、Message()に格納された受信した情報(0〜255)が1か2か3だった時に、モーター正転、逆転、停止を行います。 |
![]() |
タスク turning
このタスクでは、、Message()に格納された受信した情報(0〜255)が4か5か6だった時に、turn right,turn left,verticalの関数を呼び出して 右折左折直進の動作をさせます。 SetPowerの命令がありますが、これはモーターの回転力を0から7の間で設定するものですが、初期設定は7であるので この場合、弱くしています。理由としては、モーターの回転力が強すぎると、回転速度も速くなり、センサが反応してからモーターが停止するまでの 時間的なラグを少なくしようとしたためです。ですが、これが仮にモーターの設定がディフォルトの7のままだったとしても たいした差は無いようなので、自分の好みで追加してください。 |
![]() |
タスク back
ここでは、走行中に車が障害物に当たりタッチセンサが反応した時に、前のバンパなら後退、後ろのバンパなら前進します。 この時、タスク straghtをストップして、障害物回避中にはコントローラーの前後退の命令は受け付けなくなります。右左折の命令は受け付けます。 バンパに障害物が当たったときに、ビープ音を鳴らすPlaySoundも入れられています。 このif文でのSENSOR_1 < 100 というのは、タッチセンサの設定がRAWモードであるために100という値になっていて、通常のままならSENSOR_1 == 1でいいです。この場合は大きく影響しませんが、機能を拡張したい時はRAWモードで、細かい値を設定することが可能になります。 最後には、ちゃんとタスク straghtをstartさせないと、前後退ができないままになってしまいます。 |
![]() |
turn turn_left turn_right vertical
このプログラムは、同じような物が何度かでてきました。 ここでは、タスク turningの命令からハンドルを右左にきる動作と、タイヤを垂直にする動作をします。 |
![]() ![]() | ![]() |