micro:bitに超音波センサーを使って、人感照明を作ってみようと思います。
以前、超音波センサーを使って人感センサー(音が鳴る)を作りました。
その応用で、照明を作ります。
ポイントは人を感知しなくなって、一定時間後に照明を消すことです。
人感照明
人感照明を作ってみます。
照明器具は特別に用意しません。
micro:bitのLEDを全部点灯することで実現します。
今回は、micor:bitのオプションパーツ「超音波センサー」を使います。
その他、補助で「拡張用コネクター(GROVEシールド)」も使います。
これらの部品は、「マイクロビット アドバンスセット V2対応版」に含まれています。
基本的な勉強をするのにいい部品がそろったキットなのでお勧めです。
micro:bitの準備
今回使う備品はこれです。
①micor:bit本体
②超音波センサー
③超音波センサーをつなぐケーブル
④拡張用コネクター(GROVEシールド)
⑤USBケーブル(パソコンとつなぐ用)
これをこのように組み立てておいてください。
MakeCode for micro:bit
アドバンスセットを使えるようにする
超音波センサーなどの部品を使えるようにするためには拡張機能を追加する必要があります。
拡張機能をクリックします。
拡張機能画面で、
検索欄で「Grove」と入力して検索するか、
下のパネルから「Grove」を探して、クリックしてください。
Groveという部品が使えるようになります。
プログラム
このプログラムは、ダウンロードした瞬間から動作が始まります。
超音波センサーで距離を繰り返し測り続けます。
距離が1センチ以上ずれると、5秒間LEDを点灯します。
初期処理
このプログラムで使う変数を初期化します。
初期化というのは、変数を0などにリセットすることです。
プログラムの開始時には変数に変な値が入っていることがあります。(前回実行した時の最後の値が入ってることがあります。)
変な値が入っているとプログラムが誤作動をします。
そのため、誤作動しない値に変更することを初期化と言います。
メインのプログラム
このプログラムは、超音波センサーが1センチ以上の距離差を感知すると5秒間LEDを点灯します。
その後、また距離差の測定を始めます。
これをずっと繰り返すプログラムです。
プログラムを永遠に繰り返すためのループ処理です。
まず初めに、超音波センサーで初期の距離を測ります。
測定した結果を変数「初期距離」に入れておきます。
距離はセンチで測定しておきます。
条件分岐です。
大まかには1センチ以上の差が出たら条件分岐の中を実行するようなっています。
まず、変数「初期距離」の少数以下を切り捨てします。
これで、1センチ未満の差を無視するようにします。
式の後半部分は、改めて超音波センサーで距離を測っています。
この距離と「初期処理」に差が出た場合に条件の中のプログラムを実行します。
「初期距離」の小数点以下を切り捨てしたように、こちらも少数以下を切り捨てします。
少数以下を切り捨てしないと、1センチ未満の誤差も感知してしまします。
1センチの誤差でもセンサーが敏感すぎると感じたら、もっと誤差を許容する方法を考えてみてください。
(過去の記事にヒントがあります)
誤差が出ていることを判定するために≠(ノットイコール)を使います。
「もし~ならくりかえし」を使っているところが少し難しいポイントです。
本来は条件の分岐の中の処理を繰り返すために使います。
しかし、今回は中の処理は1回しか実行する必要がありません。
今回はこの判定処理を繰り返し行うために使用しています。
距離の比較を無限に繰り返しています。
差が出たときだけ、条件分岐の中の処理を実行します。
LEDをすべて点灯します。
5秒間そのままキープします。
その後、LEDをすべて消します。
「くりかえしを終わる」で「もし~ならくりかえし」のループを終了します。
このプログラム全体を「ずっと」で囲ってあるので、またプログラムが初めから実行されます。
コメント