走れmicro:Maqueen 黒線を見つけろ!!

5.ライントレースプログラム

まず、黒線に沿って走る方法を考えましょう。
コースの上を走るときのパターン(状態)を切り分けていく、自然と必要なプログラム(処理)が見えてきます。

 まず、下図Aのように、ラインセンサーの左右が黒線「0」の上にあれば、うまく直進できそうです。

 図Bと図Cは、カーブにはいったところです。
左右どちらかのラインセンサーが黒線「0」から外れています。
このまま直進していてはMaqueenがコースから外れてしまいますので、動きを直さなければなりません。

そこで図Bの左カーブでは、ラインセンサー右が白「1」に変わったときは、Maqueenに左に曲がるようにプログラムします。
これは、図Aで直線時に右にはみ出たときも、同じように処理してよさそうです。
図Cも同様に、左にはみ出たときに、右方向に動きを修正するようプログラムします。

これで黒線に沿って走れそうです。

プログラムに必要な処理をまとめると、次のようになります。

A.もし、ラインセンサー左が かつ ラインセンサー右が黒 なら
 左右のモータを前に回す ・・・ 直進する
 (音も鳴らす)

B.もし、ラインセンサー左が かつ ラインセンサー右が なら
 右のモータを前に回す
 左のモータを止める ・・・ 左にカーブする
 (低い音も鳴らす)

C.もし、ラインセンサー左が かつ ラインセンサー右が なら
 右のモータを止める
 左のモータを前に回す ・・・ 右にカーブする
 (高い音も鳴らす)

ブロックにすると、次のようになります。

さっそく、サーキットコースで走らせてみましょう。

モータを回す値を、100以外でも試してみてください。

プログラムの作り方は複数ありますが、今回は「ずっと」のブロックを3つ使った例です。

このようなプログラミング方法を、「並列処理」と呼んでいます。
通常プログラムは上から下へ順番に実行されていくので、下にある命令は優先順位が低く後回しになります
「並列処理」では、それぞれ同時に処理されていくので、優先順位が平等になります。
なお、厳密には並列処理は同時ではなく、それぞれの処理が少しづつ高速に切り替わって実行されます。

今回は、並列処理の利点よりも、3つの状態を解りやすくするために使用しました。