micro:bitのロボットカーセットのTinyBitでライントレースのプログラムをしてみました。
ライントレースとは、床面に描いたラインをロボットカーがラインセンサーで読み取ってそれに沿って走ることです。ロボットカーで使われるラインセンサーは光の反射を利用して床面が白色か黒色か判別してラインを読み取ります。床面が白色の場合は多くの光が反射され、黒色の場合は反射される光が少ないのを感知する訳です。ロボットカーのキットを購入すると白地に黒色のラインを描いたライントレース用の紙が付いていたりします。
ラインセンサーは2個一組になっていて、TinyBitでは充電池の両側にあります。(赤丸の位置)左右のセンサーがそれぞれ床面が白色か黒色か判別すると組み合わせは
A 左右ともに白色 B 左 黒色 右 白色 C 左 白色 右 黒色 D 左右ともに黒色 の4通りになります。それぞれの場合について、どうロボットカーを動かすかプログラムすればラインをトレースして動く訳ですね。注意しなければいけないのはラインセンサーの間隔です。間隔が狭ければ黒いラインの上から外れないように動かし、間隔が広ければラインの上に乗らないように動かさなければなりません。つまり、A~Dに割り当てる動作が正反対になります。TinyBitの場合は間隔が広いので、ラインの上に乗らないように動かさなければなりません。
TinyBitでは、左右それぞれのセンサーが白色か黒色か判別するブロックがありますので、それを使います。
論理ブロックの中から「もし~なら でなければ」という条件判断のブロックを選び、まずAの場合をプログラムします。両方白色なので、前進になります。
次にBの場合は左側がラインに乗っている状態ですから、左に動いてラインから外れるようにプログラムします。
Cの場合は反対に右側がラインに乗っている状態ですから、右に動いてラインから外れるようにします。
Dの場合はどちらにも動けないので停止となります。
TinyBitの場合はこれで完成ですが、他のロボットカーではセンサーの間隔や拡張された命令ブロックなどが違うので、それぞれ確認してプログラムしてください。