ここがポイント:センサーの値は常に動いているmBotの超音波センサーとは?ロボットプログラミングの教材は多数ありますが、かなりの確率で搭載されているセンサーの一つが、距離を測定する超音波センサーです。mBotにも、もちろんついています。お馴染みの外観の一番目立つ「目」の部分が超音波センサーです。超音波センサーの仕組みは、簡単に言うと、右目から超音波が出力され、何かの障害物にあたって跳ね返ってくる音波を、左目で受信します。ちなみに、障害物は、透明であっても認識され跳ね返ってきます。この原理でどのように距離を検出するかというと、送信してから受信するまでの時間を計っているのです。mBotの超音波センサーは、3cm~400cmの距離を計ることが出来ます。超音波センサーでの距離測定は誤差・タイムラグが大きく、正確な距離測定や、リアルタイム性を求める場合には向いていないので、プログラミングする時も、気をつけましょう。因みに、距離を測るセンサーには、超音波センサーのほかに、光学式センサーがあります。参考までに、光学式センサと超音波式センサを比較した場合のメリット・デメリットは以下の表を参照してください。(ローカル版)・オンラインのファームウェアバージョン_06.01.107・Windows10・アップロードモードオフ(USBケーブルが邪魔な場合は、PC内蔵Bluetoothか、Makeblock社のBluetooth変換のUSBドングルで接続をお勧めします)超音波センサーのデータをmBlock5で確認するまずは、超音波センサーの値を確認してみましょう。超音波センサーの値は、3~400cmです。それをmBlock5で表示させるには、「センサー」ブロックパレットの中(なか)にある、「超音波センサーの値ブロック」の横にある、チェックボックスにチェックを入れると、確認できます。チェックボックスにチェックを入れると、スプライトエリアに、超音波センサーの値が表示されます。その状態で、mBotの超音波センサーの所に、手のひらを近づけたり、離したりしてみましょう。超音波センサーの数字が変わっていくのが分かります。超音波センサーの前に何もないと、「400」の数字で止まります。mBlock3では、センサーデータをパンダに言わせるというのが、結構簡単にできました。mBlock5では、スプライト(パンダ)とデバイス(mBot)が、別々のオブジェクト(スプライト)として扱われるので、センサーデータをスプライトに送信する場合は、「グローバル変数」か、mBotのmBlock5の拡張機能である、「アップロードメッセージ」というものを使う必要があります。その辺りの連携は、また別のページで説明いたします。超音波センサーの値に応じてLEDの明るさを変える上のように超音波センサーの値が、連続的に変わっていくのを確認したら、その値(距離)に応じて、mBotのLEDの光らせ方を変えるというプログラムを作ってみましょう。上で確認したように、「超音波センサーの値」ブロックの中には、常に、検出した3~400の数字(値=距離データ)が入っています。そのブロックを、LED点灯するブロックの〇部分入れてみましょう。このプログラムを実行して、超音波センサーの前に手を近づけたり離したりすると、その距離に応じて、超音波センサーの値が変わり、その値が、LEDの明るさの数字(0~255)として認識され、mBotのLEDが手を近づけると暗くになり、遠ざけると明るくなります。重要なポイントは、丸いブロックには、値が入り、LEDの明るさや、演算ブロックなど条件を設定するブロックに入れることが出来るという点です。これは、変数を取り入れたプログラムを考える時に重要なことなので、しっかり理解しておきましょう。超音波センサーで先方の障害物を検知するmBotの超音波センサーは、3cm~400cm前のモノを検知できますが、検出距離の精度はそこまで高くないので、正確な距離測定には向いていません。●●cmの距離にモノがあったら、動きを変えるなどのプログラムには向いています。mBotが走行中に、15cm前に障害物があったら、止まるこのページでは、一番基本的な、前に障害物があったら止まるというプログラムを作る際の考え方についての例を解説します。1、プログラミング前に、処理を整理してみる。mBlock5でプログラミングする前に、まずは、どういう手順で、処理していけばよいか、考えてみましょう。1mBotが走行中=「mBotが前向きに動いている」215cm前に障害物があったら=「もし超音波センサーの距離(値)が、15cmより小さいなら、2、条件を決めるブロックを作る「もし超音波センサーの距離(値)が、15cmより小さいならという、条件ブロックを作る時は、演算ブロックを使います。演算ブロックの解説は光センサーの解説ページもご参照ください。2、下のブロックを組み合わせて、プログラムを作ってみましょう。・障害物を検知したら、ブザーを鳴らして止めてみよう・障害物を検知したら、LEDを光らせて止めてみよう・障害物を検知したら、障害物をよけて、また元の道に戻るプログラムを作ってみようここがポイント:センサーの値は常に動いている障害物回避プログラムで、こんなプログラムを考えた人はいないでしょうか?「超音波センサー値=15cm」の時に、動きを止めるという事であれば、このプログラムでも間違いではありません。最初にセンサーデータを確認したように、センサーの値は、常に揺れ動いていて、一つの数字にピタッと、止まっている事はありません。上のプログラムでは、超音波センサーの値が、15センチで「ぴったり定まった時」じゃないと、mBotは止まらない、というプログラムです。ロボットプログラミングで、センサーデータを使うときは、値をぴったりに条件設定するのではなく、より大きい・小さいといった条件で設定する所がポイントです。最新の「mBlock5」に対応した「mBot」の基本活用術も連載中です。合わせてご覧ください。17MakeX2019のテーマ・開催概要が発表されました。J-tinkering。