micro:bitには光センサーが搭載されています。光センサーは日常生活の身の回りでもよく使われています。光センサーで何ができるか?光センサーとは何なのか?どのようにmicro:bitでプログラムするのかにについて紹介します。
なにができる?
名前の通り、光の量を計測できます。計測値は、入力信号として、0~255の256段階の値で取り込めます。micro:bitのLEDマトリクス部分が光センサーとして機能するので、部品を追加することなく計測できるのは、非常に便利ですね。
光センサーとは?
LEDは発光する素子なのに、なぜ光センサーになるか不思議ですよね。実は、このLEDは常時点灯しているように見えて、常時点灯していません。肉眼ではわからないほどの速さで点滅を繰り返しています。LEDが消灯しているときに、光センサーとして機能しています。LEDは電気を流して発光します。一方、光センサーは、光を受けることで、電気を流します。光が強ければ強いほど、大きな電気が流れます。これは、半導体のPN接合の特徴です。太陽光パネルもこれと同じ原理です。もっと詳しく原理を理解するためには、半導体工学の知識(価電子帯・伝導帯・バンドギャップ・励起など)が必要なため、ここでは割愛します。このように、光を受けて電気を流す機器は、身近なところで使われています。例えば、街灯は昼間に消灯していますが、夕方暗くなってくると点灯します。これは、光センサーをスイッチとして使用した例です。
どんな物が作れる?
micro:bitで光の強さを計測して、その強さを棒グラフで表すデバイスを作ってみましょう。完成品の動作は下記のとおりです。
プログラミング
光量の計測は常時行うので、「ずっと」のループを使用します。計測した光の強さは、「明るさ」で取得します。「明るさ」は、「入力」のブロックとして、はじめから準備されています。変数「reading」を作成して、この「明るさ」を代入します。そして、LEDのブロックから「棒グラフを表示する」を使用して、LEDマトリクスに「reading」の大きさを棒グラフ表示します。光センサーの最大値(明るさの最大値)は255なので、 このブロックの「最大値」を 255 に設定します。
まずは、この状態でシミュレータで動作確認をしてみてください。シミュレータ上で明るさを変更する場合は、シミュレータ左上の月のような丸印(黄色と灰色)をドラッグすることでできます。
次に、棒グラフではなく、数値で表示する機能を追加してみましょう。論理ブロックの「もし~なら」のブロックを使用して、Aボタンが押されているときに、「reading」の値を表示するようにします。
これもシミュレータで動作確認してみてください。Aボタンをマウスでクリックすると、明るさの数値がLEDマトリクスにスクロール表示されます。ここまでできたら、実際にmicro:bitにダウンロードしてみましょう。
使用するブロックがどこにあるかわからない、シミュレータの操作方法がわからない場合は、下記の画面キャプチャを参考にしてください。
JavaScriptで記述する場合は、下記のコードとなります。
let reading = 0
basic.forever(function () {
reading = input.lightLevel()
led.plotBarGraph(
reading,
255
)
if (input.buttonIsPressed(Button.A)) {
basic.showNumber(reading)
}
})
まとめ
実際に光センサーを動かすことで、理解が深まったと思います。冒頭で、光センサーの使用例として、街頭を取り上げましたが、他にはどのようなものがあるでしょうか?一度考えてみてください。日頃からそのような目線で見ていると、今まで気づかなかったことが見えてくるかもしれません。
コメントを残す