前回(といっても実は昨年のクリスマス!)紹介したmicro:bitのクリスマスオーナメント。プログラムを紹介していなかったのでどんなプログラムで動いているのか、解説します。micro:bit側で必要なセッティングは前回の記事を参照してください。
(1)[作例紹介]micro:bitで音と光の出るクリスマスオーナメントを作成。明るさ検知付き!
(2)[プログラム解説]micro:bitで暗くなったらジングルベルが流れるクリスマスオーナメント(この記事)
どんな動きをする?
前回記事でも紹介した動画はこちら。暗くなったら自動的にジングルベルとLED表示で演出してくれます。
実は2020年11月おわりにmicro:bitの新型v2が発売されていて、スピーカーが本体に搭載されるようになりました。新型を使う場合は、スピーカーモジュールを使わなくても本体から音が出ますのでとても身軽で便利です。同じプログラムを新型micro:bitで動かした動画はこちら。機能は同じです。
v2ちはスピーカーモジュールと比べるとちょっとスピーカーの反応が違って、同じ音が続くとアタックが不明瞭でつながって聞こえてしまうのが残念。ここでは我慢してこのままにします。(→半分の拍数+休符にすると改善できるので、別に音声だけのプログラムファイルを公開しました。)
プログラム解説
ではプログラムを紹介します。
(1)ジングルベル演奏部分:関数を作る
最初に、ジングルベルの演奏部分だけを作ります。
次の図の通りです。関数を使って同じメロディ部分を使いまわしています。
関数「playMusic」が他の関数「patternA」「patternB」を呼んでいます。メインのプログラムでは関数「playMusic」を呼ぶだけで、ジンググベルの音楽が流れます。
(2)明るいか暗いかを判定する:変数を使う
暗くなったらジングルベルが流れるするには、「今暗いのか、明るいのか」を判定しなければいけません。その判定の仕組み部分を作ります。
次の図の通りです。
「on」という名前の変数を作り最初は0にしておきます(上図左側)。
明るさを常にチェックして、暗くなったら変数「on」に「1」を入れに、明るくなればまた変数「on」に「0」を入れます(上図右側)。
この変数「on」の値が0か1なのかということが、明るいか暗いかの目印となります。
micro:bitの明るさセンサーは「 0〜255」の値で表示されます。ここでは、「暗いとき」の判定は「明るさ=0」としていますが、「明るさ<1」「明るさ<3」など、使う環境に応じて値は調整してみてください。値のチェック方法はこの記事の一番下で説明しています。
(3)暗くなったらジングルベルを流す、LEDで演出する
次の図の通り、暗くなったら、ジングルベルの曲を流すプログラム(右側)と、LEDにマークと文字を流すプログラムを作成します。
これで完成です。プログラム全体を表示すると次の図の通りです。不鮮明ですから、細かいところは上の説明で確認してください。
「明るさ=0」を基準にしたこのプログラムでも、micro:bitがちょっと影になるだけでも暗いという判定になりジングルベルが鳴り始めます。正確な明るさ/暗さ判定が必要なプログラムはmicro:bitには向かないかもしれませんが、十分に楽しめるので、ぜひいろいろな仕組みを作ってみましょう。
おまけ:明るさの値をチェックする方法
どのくらいの明るさでどんな数値になるのかを確かめたいときは、テスト用に、LEDに明るさの値を表示させるだけのプログラムを作って動かしてみてください。
[明るさの数値をチェックするプログラムの例]
(1)[作例紹介]micro:bitで音と光の出るクリスマスオーナメントを作成。明るさ検知付き!
(2)[プログラム解説]micro:bitで暗くなったらジングルベルが流れるクリスマスオーナメント(この記事)
なお、インプレスの「窓の杜」では、暗くなったら……ではなく、手をたたいた音に反応する新しいv2向けのクリスマスオーナメントの作り方を解説しました。こちらの記事もあわせてチェックしてみてください!
狩野 さやか
Studio947のデザイナー・ライター。デザイン・ウェブ制作全般を担当する一方、技術書籍の執筆や、教育のICT活用・子ども向けプログラミングについての取材・執筆をしている。著書に『ひらめき!プログラミングワールド』『見た目にこだわるJimdo入門』『ふたりは同時に親になる 産後の「ずれ」の処方箋』。
コメント