この記事では、マイクロビット(micro:bit)を使った工作「冷蔵庫の見張り番」の作り方を紹介します。
マイクロビットを使った工作にチャレンジしたい方や、夏休みの自由研究でおどろかれたい方、そして日常生活で役立つものを作りたい方におすすめです。
初心者さんでもわかりやすい手順で解説しています。
また、プログラムはなるべく簡単なものにし、内容が理解しやすくなるように工夫しました。
今回作ったプログラム「冷蔵庫の見張り番」
冷蔵庫のドアを10秒開けたままにすると、庫内の温度は3~5℃も上がり、元の温度にもどるまでに10分以上もかかると言われています。
そこで冷蔵庫を開けている時間を視覚的にお知らせする装置を作ってみました。
マイクロビットを冷蔵庫の中に置いて、開いている時間によって表情が変わります。
- 冷蔵庫を開けると「うれしい顔」を表示する
- 冷蔵庫を開けてから5秒後に「かなしい顔」を表示する
- 冷蔵庫を開けてから10秒後に「おこり顔」が表示する
必要なもの
- マイクロビット
- 電池ボックス&電池
マイクロビット単体で動かしたい場合、電池ボックスが必要です。 - USBケーブル
パソコン側がUSB TypeA、マイクロビット側がMicro USB TypeBです。 - パソコン
インターネットができてUSBポートがついているもの。 - 工作する場合、その材料
画用紙や牛乳パック、空き箱など
使用するマイクロビットの機能
今回は、マイクロビットのLEDと明るさセンサーを使います。
LED
マイクロビットの表面の中央にある25個(5×5)の赤色に光るLED。
文字や数字などを表示させることができます。
明るさセンサー
LEDは明るさセンサーとしても使うことができます。
まわりの明るさを計測し、0~255の値(真っ暗だと0、明るくなるほど値が大きくなる)で表します。
冷蔵庫が閉まっている時、庫内は暗くなります。また、冷蔵庫を開けた時に照明がついて庫内は明るくなります。
明るさセンサーを使えば、冷蔵庫が開いている・閉まっているを判断できますね。
MakeCodeエディターでプログラミング
MakeCode(メイクコード)エディターで、プログラミングしてみましょう。
MakeCodeエディターの基本的な使い方は、「【マイクロビット】MakeCode(メイクコード)エディターの使い方」にまとめています。
光量計を作ってみる
まず最初に、光量計を作ってみましょう。
ボタンAがおされた時、明るさの値をLEDに表示するプログラムです。
ツールボックスから必要なブロックを、ドラッグアンドドロップしてプログラミングエリアに出します。
「ボタンAが押されたとき」ブロックと「明るさ」ブロックは入力のカテゴリ、「数を表示」ブロックは基本のカテゴリにあります。
必要なブロックをプログラミングエリアに出したら、ドラッグアンドドロップでブロックを組み立てていきます。
シミュレーターで確認してみよう
プログラムが完成したら、シミュレーターでテストしましょう。
「明るさ」ブロックを使っていると、マイクロビットの左上にコントローラーが出てきます。
丸の中をドラッグして、明るさの値を変えてみてください。
LEDに明るさの値が表示されたでしょうか。
実機で動かしてみよう
シミュレーターで確認できたら、マイクロビットにプログラムを転送して実際に動かしてみましょう。
- パソコンとマイクロビットをUSBケーブルでつなぐ
- Makecodeエディターの「ダウンロード」ボタンをクリックし、.hexファイルをダウンロードする
- ダウンロードした.hexファイルを「MICROBIT」ドライブに保存する
マイクロビットにプログラムを転送する方法は「【マイクロビット】パソコンとのつなぎ方・外し方、プログラムの転送方法」でくわしく解説しています。
転送が完了すると、プログラムが自動的に実行されます。
部屋の中や外など色々な場所の明るさを測ってみてください。
この時、冷蔵庫の中の明るさを測ってメモしておいてくださいね。
冷蔵庫の見張り番のプログラムをつくる
LEDと明るさセンサーの使い方が分かりました。では、本題の冷蔵庫の見張り番をプログラミングしてみましょう。
使っているブロックの中で、ちょっとむずかしいものを解説します。
変数の使い方
「スタート稼働時間」と「経過時間」は変数です。
変数とは、データを一時的に覚えておくための入れ物のことです。プログラムで人間が分かるように名前を付けます。
変数カテゴリで「変数を追加する」ボタンをクリックして作ってください。
変数の値を変える「変数~を~にする」ブロックも、変数カテゴリにあります。
変数については「変数とは?スクラッチ(Scratch)を使って解説」でくわしく解説しています。
稼働時間を取得する
「稼働時間(ミリ秒)」は、電源が入ってから経過した時間を取得するブロック。入力カテゴリのその他にあります。
時間の単位はミリ秒です。
条件分岐(もし~なら)
「もし~なら」や「○○>□□」は条件によって処理を分けるブロックです。論理のカテゴリにあります。
条件にあっていれば「~なら」、条件にあわなければ「でなければ」の中の処理を行います。
プログラムの内容を解説
今回のプログラムをフローチャートにしてみました。
くわしくみてみましょう。
最初だけ・ずっと
「最初だけ」のブロックの中には、プログラムの起動時に1回だけ実行する処理が入ります。
変数「スタート稼働時間」を「稼働時間(ミリ秒)」にする命令で、変数「スタート稼働時間」に冷蔵庫を開けた時点の稼働時間を記憶しておきます。
以降は「ずっと」のブロックの中の内容をくり返します。
もし冷蔵庫が開いていたらの判定
- もし「明るさ」> 5 なら
冷蔵庫が開いている状態です。経過時間の判定を行います。
- でなければ
冷蔵庫が閉まっている状態です。「スタート稼働時間」をリセット(稼働時間(ミリ秒)にする)してLEDの表示を消します。
明るさセンサーは、マイクロビットのLEDの明るさも測定してしまうので、0だとうまく動きません。
また冷蔵庫の中の明るさの値より大きな値にしてしまうと、冷蔵庫を開けても反応しなくなってしまいます。
最初に作った光量計で測った冷蔵庫の中の明るさを参考に、判定の値を調整してみてください。
経過時間の判定
「経過時間」を「稼働時間(ミリ秒)」-「スタート稼働時間」にする命令で、冷蔵庫を開けてから何秒たったか計算しています。
- もし「経過時間」< 5000 なら
「冷蔵庫を開けてから5秒未満なら」の判定です。
「うれしい顔」を表示します。
- でなければもし「経過時間」<= 10000 なら
「冷蔵庫を開けてから5秒~10秒」ならの判定です。
「かなしい顔」を表示します。
- でなければ
「10秒より長く冷蔵庫を開けている状態」なので「おこり顔」を表示します。
シミュレーターで確認
プログラムが完成したらシミュレーターで思った通りに動くかテストしましょう。
コントローラーをドラッグして明るさの値を変えてみてください。
5より大きい場合と、5以下の場合で、動きが変わったでしょうか。
うれしい顔が表示されてから5秒後、10秒後に顔に変化するか確認しましょう。
実機でテストしてみよう
シミュレーターで確認できたら、マイクロビットにプログラムを転送して実際に動かしてみましょう。
明るい場所に置いたとき、真っ暗な場所に置いたときで動きが変わったでしょうか。
また、5秒後、10秒後に顔に変化するかも確認しましょう。
ずっと冷蔵庫を開けたり閉めたりしていると怒られるので、冷蔵庫の中に置くテストは一番最後にやりましょうね。
マイクロビットを装飾しよう(工作)
マイクロビットをそのまま冷蔵庫に置くのもさみしいので装飾してみましょう。
マイクロビットと電池ボックスを収納するケースを作ってみました。
牛乳パックや空き箱を利用するのもいいですね。
もっとスゴイものを作りたい人向け
最新バージョンのマイクロビット(v2.0)にはスピーカーが内蔵されています。
LEDだけだと気が付かない場合もあるので、音を鳴らす命令を追加して、音でもお知らせするようにしてもいいと思います。
音を鳴らすプログラムの作り方は下の記事にまとめています。
よかったら参考にしてみてください。
なお、旧バージョンのマイクロビット(V1.5以前)にはスピーカーがついていません。
本体と別にスピーカーとワニ口クリップが必要になります。
まとめ
冷蔵庫の見張り番の作り方を紹介しました。
夏休みの工作の材料としてマイクロビットは、少し金額が高いように感じるかもしれません。
しかし、マイクロビットはくり返し使うことができますし、新しくプログラムを作ってまったく違う作品を作ることができます。
1回きりの工作キットよりは長く使えるのではないでしょうか。
次の年にもっと複雑なプログラムにチャレンジするのもオススメです。