mBotの光センサーとは?

光センサーは、mBotのメインボード「mCore」にあります。mBotの透明ケースを外すと、写真の位置に、光センサーが見えます。

mCoreの光センサー画像

 光センサーは、照度センサーとも呼ばれていて、明るさを、0~1023の数字で出力することが出来るセンサーです。
 光センサーは、私たちの生活の中で、色々な場所に、あります。
 例えば、身の回りに、暗くなったら自動で付くライトがあります。また、スマートフォンには、使っている場所の明るさに応じて、画面を明るくしたり暗くしたりする機能がついていますが、それは、光センサーが明るさを検知して実現しているのです。

mBotの設定やmBlockのプログラミングの基本的な部分は、以下のページをご参照下さい。

準備その1 mBotの組み立てからPC接続まで
準備その2 ファームウェア更新からログイン設定
基本1 mBotのLEDを光らせてみよう
基本2 mBotのブザーを鳴らせてみよう
基本3 動きブロックを使ってmBotを自在に動かそう
基本4 ライントレースセンサーの基本と使い方 

説明の際の使用環境

・mBot_v1.1 日本国内正規品 Bluetooth版 購入時期は2019年8月
(新型Bluetoothモジュール)
・mBlock_v5.1 (ローカル版)
・オンラインのファームウェアバージョン_06.01.107
・Windows10
・アップロードモードオフ(USBケーブルが邪魔な場合は、PC内蔵Bluetoothか、Makeblock社のBluetooth変換のUSBドングルで接続をお勧めします)

光センサーのデータをmBlock5で確認する

 まずは、光センサーの値を確認してみましょう。

 光センサーの値は、0~1023です。それをmBlock5で表示させるには、「センサー」ブロックパレットの中にある、光センサーの値ブロックの横にある、チェックボックスにチェックを入れると、確認できます。

mBlock5_光センサーデータ確認画像

 チェックボックスにチェックを入れると、スプライトエリアに、光センサーの値が表示されます。
 その状態で、mBotの光センサーの部分を手で隠して暗くしたり、手を放して明るくしてみましょう。光センサーの数字が変わっていくのが分かります。

 尚、mBlock3では、センサーデータをパンダに言わせるというのが、結構簡単にできました。
 一方、mBlock5では、スプライト(パンダ)とデバイス(mBot)が、別々のオブジェクト(スプライト)として扱われるので、センサーデータをスプライトに送信する場合は、「グローバル変数」か、mBotのmBlock5の拡張機能である、「アップロードメッセージ」というものを使う必要があります。その辺りの連携は、また別のページで説明いたします。 

明るさによってLEDの光方を変えるプログラムに挑戦

明るさによって、光センサーの数字が変わることが、確認できたら、次は、明るさによって、mBotのLEDの光らせかたを変えるプログラミングに挑戦してみましょう。

手をかざしている時、ブザーを鳴らし、手をかざしていない時、ブザーを鳴らさない

手をかざす=暗いときと、手をかざさない=明るいときという条件によって、mBotの挙動を変えるプログラムを作るには、どうしたらいいでしょうか?
まずは、最初なので、以下の順番で、プログラムを作ってみましょう。

1、それぞれの状態の時の、明るさを調べる

・手をかざしている時:「    」~「    」
例)95~130

・手をかざしていない時「    」~「    」
例)950~980

2、手をかざしている時の状態を表すブロックを作る

・手をかざしている時、光センサーの値は「130より小さい」
「~より小さい・~より大きい」という条件を表すブロックは、演算ブロックパレットの中にあります。

mBlock5_演算ブロックパレット

例えば、「光センサーの値が、130より小さい」という条件のブロックを作る場合は、下にように、光センサーの値のブロックを、演算ブロックのまるの中に入れます。

mBlock5_演算ブロックにセンサーの値の条件を入れる画像

いれた後は、「130」に数字を設定すれば、完成です。

mBlock5_センサーの値の演算ブロック画像

このブロックが、手をかざしていない時の条件を表すブロックですね。

ちなみに、手をかざしていない時の状態で、光センサーの値は「950より大きい」なので、このようなブロックを作ることが出来ますよね。

mBlock5_光センサーを使った演算ブロック画像

※ブロックのカタチには意味があります。
・楕円形のブロックは、全て「センサーデータ・メッセージ・数字」など、いわゆる「情報・データ」を意味し、「値」と言われます。
・六角形のブロックは、全て「条件」を表しています。

3、条件分岐ブロックを使って、プログラムを作る

mBlock5_光センサーサンプルプログラム1

プログラムを作ったら、イベントを実行して、手をかざしてみましょう。

ティンカリング 

・暗い部屋の中で、mBotにライトをあてると、走行し、ライトをあてないと、止まるプログラムを作ってみよう

ここがポイント:演算ブロック

このページでは、演算ブロックの基本的な使い方を説明しました。演算というと、少し難しいかも知れませんが、ロボットプログラミングでは、主に、このページで出てきた、比較演算ブロックと、論理演算ブロックというものがあることを理解しておけば、十分に様々なプログラムを作ることが可能です。

論理演算ブロックと比較演算ブロック説明画像

論理演算ブロックの六角形には、センサーの条件や、比較演算ブロックが入ります。

この論理演算ブロックを使うと、より細かく条件を設定することができ、より思い通りにロボットを動かすプログラムを作ることが出来ます。 

論理演算ブロックは、また別のページで紹介します。