micro:bitで光センサー計測をいい具合にやってみるメモ

この記事は micro:bit Advent Calendar 2019 の18日目の記事です。micro:bitで光センサー計測をいい具合にやってみるメモです。

micro:bitの光センサーがいまいちピンとこない

光センサーを使いたくて 機能 | micro:bit  しらべてみました。

image

最初、どこで計測してるか分かってなかったんです。本家の図を見ていても、light sensorって無い!

でもちゃんとありました。

本家のサイトは分かりやすいですね。

image

これは何? LED画面は逆に入力するものにも成りえます。LED画面は簡単な光センサーとしても機能するので、環境光を調べられます。

あー、そういうこと!たしかにLED自体で光の検出ってありましたね。

以前こんな記事見かけてました。こんな身近なデバイスで遭遇できるとは。うれしい。てっきり、独立したセンサーかと思ってました。

ということでブロックを書いてみる

はじめは、5 x 5 のLEDが下から徐々に光量に合わせて上昇していくってのを考えました。

こういうかんじ。

image

ブロックの全容。長い。実際のブロックは以下。

コード→light-tester-01

エライことになってますね。

image

今のスキルでは、5 x 5 のマス目を動的に制御できなかったので、判定式をひとつひとつつくって愚直に静的に指定してます。これが長くなる原因です。設定中に手がもげそうだった。

ともあれ、どれくらいの光量が現実世界で生じていて、micro:bitが反応しているかがわかりました。

数字でわかるバージョンも作った

前述のLEDであがるやつ、いいかなって思ったんですが、思ったより地味で。これなら数字でわかりやすくしちゃったほうがいいなーと思いまして、それも作ってみました。

こっちのほうが、分かりやすいかも。

コード→light-tester-02

思った以上にブロックもスッキリ。光センサーは0~255でくるので255で割って、0~9に置き換えています。さっきの判定式と比べるとサクッとかけるのがいいところ。

ええ、そうですね、かけた労力は必ずしも、わかりやすさには直結しないですよね。わかります。(手をいたわりながら)

実は一番苦労したのはカメラ撮影でした。光センサーって当たり前ですけど、光量がメッチャ変化するので、ホワイトバランス自動調整されちゃうと、なかなか分かりやすい絵が撮れない。