このページは、ビジュアルプログラミングソフト「mBlock3」で解説しています。以下に、最新版の「mBlock5」での解説ページも、合わせてご覧ください。
■ mBlock5対応!mBotのライントレースセンサーの基本と使い方をマスター
https://j-tinkering.com/mblock5-mbot6/
mBotが黒い線の上を走行するのは、ライントレースセンサーのおかげ
mBotが線の上を走っている動画を見たことがある人も多いと思います。これは、mBotのラインフォロワーセンサー(ライントレースセンサー)のおかげなんです。ラインフォロワーセンサーはこちらです。ラインフォロワセンサーモジュールには、光りを発する赤外線ライトと、光りを検出するLEDフォトダイオードのセットのセンサーが2つついています。

センサーは、発光された赤外線が跳ね返ってくる量によって、白か黒かを見分けます。赤外線が多く跳ね返るのは、白いライン、跳ね返りが少ない場合は黒と判定します。

※Makeblock社HPより引用
下の画像のようにこのセンサーが2つ(sensor1/sensor2)ついています。

それぞれのラインフォロワーセンサーが、黒か白かを判定すると、下の図のように、全部で4種類のデータ(数値)出来るので、それをmBlockに、0~3で表示します。
センサー値 | 数値の意味 |
0 | 両方のセンサーが黒と判定 |
1 | 左のセンサーが黒、右のセンサーが白 |
2 | 左のセンサーが白、右のセンサーが黒 |
3 | 両方のセンサーが白 |
白い紙の上にmBotを載せると、両方のラインフォロワーセンサーが「白」と検知して、「3」数字をPCに伝えて、↑のようにパンダが「3」と言うようなことができます。
ラインフォロワーセンサーを使って、mBotが黒線上を走行するプログラム
mBotを黒線上に走行させるには、
両方のセンサーが黒→前向き
左が黒、右が白→左向き
左が白、右が黒→右向き
両方のセンサーが白→後向き
のように、走行させればよいですね、単純にそのプログラムは、こちらです。

ただ、ちょっと、プログラムがごちゃごちゃしていますね。
なので、やっぱり、変数ブロックを作って整理しましょう。
そのプログラムがこちらです。

さて、このプログラムで、mBlock(PC)から、Bluetooth無線でコントロールしてみましょう!
そうすると、mBotは想定していたような動きはせず、黒い線からすぐに外れたり、動かなかったりしてはいませんか?
これは、このプログラムがmBlock(PC)から実行されているためです(=mBot内にはプログラムが入っていません)。 ラインフォロワーセンサーのデータが、mBotから、一旦、PC(mBlock)に送信され、そのデータをもとに、mBotに前・左・右・後へ進むという事をプログラムが判断して、再度、mBotに送信されるという仕組みなのですが、そのプロセスには時間がかかり、その遅れ(タイムラグ)によって、超音波センサーの距離判定→mBotの制御、が間に合わないのです。
このタイムラグの影響をなくさないと、黒線上を動くmBotは出来ません。その為に、いちいちPCとmBot間で通信しないように、mBlockで実行していたプログラムを、mCoreボードにアップロードする必要があります。
その為には、これまで、緑の旗をクリックしたとき、キーが押された時のようなPCからのイベントブロックを使う代わりに、ロボットパレットにある、「mBot プログラム」ブロックを使います。

上のようにmBotのプログラムを書いた後、mBotプログラムのハットブロックを右クリックしましょう。

Arduinoにアップロードをクリックすると、こんな画面になります。

右のArduinoのコードの画面の上に「Arduinoにアップロードする」のボタンがあるので、そこをクリックすると、アップロードが開始されます。
ここで注意は、アップロードする場合は、無線ではなく、USBケーブルでmBotをPCに繋げる点です。これで、mBotは、上手く、黒線上を走行するようになったと思います。
※2019年2月7日追記:別売りの「makeblock専用送受信ドングル」を購入すると、USBケーブルなしで、Bluetooth無線でプログラムをアップロードすることが可能になります。
Bluetooth送受信ドングルの詳細はこちらでレビューしています。
ちなみに、↑のプログラムですと、アップロードした瞬間から、mBotが動いてしまいますよね。
そこで、mCoreのボード上のボタンが押されたら、3秒後に走り始めるというプログラムにしてみましょう!

これで、↓の動画のような動きになります。
mBotのラインフォロワーセンサーは、この動画のように、ラインの上を沿って走らせるために使われることが多いですが、その他にも応用した使い方をすることが可能です。そちらの解説ページも合わせてご参考頂けたらと思います↓
mBotのラインフォロワーセンサーでラインカウントする