今回は、mBotプログラミングシリーズ(mBlock編)の第8回です。
この回では、mBotに搭載されている超音波センサーを使って、障害物を検知し、それを回避するプログラムを作成します。
障害物を検知して回避する動きは、ロボット工学や自動運転技術にも通じる重要なトピックです。ぜひ一緒に学んでいきましょう!
この記事で分かること
- mBotの超音波センサーの仕組み
- 超音波センサーに関するブロックとその使い方
- 障害物を検知して回避するプログラムの作成方法
超音波センサーとは
超音波センサーは、mBotの目になっている部分で、音波を使って物体までの距離を測ることができます。
前方にある障害物の距離をセンチメートル単位で計測でき、測定範囲は3cm~400cm(4m)です。

右目の下に『T』、左目には『R』が記載されています。
これは、Transmitter(送信機)とReceiver(受信機)を意味しています。
超音波センサーの仕組みを次に示します。

- 送信機(T)から超音波を出す
- 何かに反射して超音波が跳ね返ってくる
- 受信機(R)で跳ね返ってきた超音波を受信する
- 送信から受信までの時間を測定し、距離を計算する
mBlockとは?『スクラッチ(Scratch)』との違い
mBlockは、小学校や学習塾で取り入れられている『スクラッチ(Scratch)』をベースとしたビジュアルプログラミングツールです。
スクラッチの基本的な操作感を引き継ぎながら、ロボットやハードウェアの制御に特化しているため、mBlockを使えば、プログラミング初心者でも簡単にロボットプログラミングを始めることができます。
mBlockで使用するブロック
『センサー』パレット
各種センサーのブロックが入っています。
今回は超音波センサーのブロックを使います。

超音波が測定した距離を3~400の値で表します。
簡単な動作プログラム作成
『超音波センサーの値をmBlockのステージ上に常時モニタリングする』プログラムを作ってみます。

変数『超音波センサーの値』を作って、超音波センサーブロックの値を変数に入れます。
『変数を表示する』ブロックを処理することで、超音波センサーの値がmBlockのステージ上に表示されます。
旗マークを押すたびに、その時のセンサー値で値が更新されます。

【例題】超音波センサーを使ってみよう
例題1:センサー値に応じて処理を切り替える
- 例題
- 解答例
『障害物が近づいたら、LEDライトを赤色に点灯させて、ブザーを鳴らす』プログラムを作ってみましょう。
※障害物が遠ざかったら、LEDライトは消灯、ブザーは鳴らないようにしましょう

- 繰り返し処理で、超音波センサーの値を常時読み出す
- 『障害物が近づいたら』の条件は、比較演算『超音波センサーの値 < 15cm』を使う
※15cmの距離は任意に設定してください - 障害物が離れた時の消灯処理も忘れずに
例題2:障害物回避動作をさせてみよう①
- 例題
- 解答例
『mBotを前進走行させて、障害物が近づいたら停止する』プログラムを作ってみましょう。

- 繰り返し処理で、超音波センサーの値を常時読み出す
- 『障害物が近づいたら』の条件は、比較演算『超音波センサーの値 < 15cm』を使う
※15cmの距離は任意に設定してください
例題1とプログラムの構造は同じです。
mBotを止めるブロックと動かすブロックを適切に配置してください。
例題3:障害物回避動作をさせてみよう②
- 例題
- 解答例
『mBotを前進走行させて、障害物が近づいたら方向転換する』プログラムを作ってみましょう。

もしくは

- プログラムの構造は例題2と同じ
- 『方向転換』するために、『左(または右)向きに〇秒動かす』ブロックを使う
『左(または右)向きに〇秒動かす』ブロックに設定する時間は、90°~180°回転する時間を設定するのが良いでしょう。
短すぎる場合、回転が小さく、障害物に対して斜めに前進していく可能性があります。
超音波センサーでの障害物の検出は、斜めの壁に対しては検出しにくいことがありますので、そのことも念頭に入れてプログラミングしてみてください。
まとめ
今回は、超音波センサーを使うことで、mBotが自律的に障害物を回避するプログラミングについて学びました。
この機能を活用して、迷路を通り抜けるチャレンジなど、さらに面白いプログラムに挑戦してみてください。
次回は、ライントレースセンサーを用いた自動運転プログラムを作成します。
mBlockを使ったmBotのプログラミング方法を丁寧に解説していておススメです。
mBotを使用した拡張的な遊びは『mBotでものづくりをはじめよう』が参考になります。mBotのパーツを段ボールと組み合わせてオリジナルのロボットを作るといったような拡張的な遊びが楽しめます。