マイクロビット(micro:bit)には、
明るさセンサーという機能がついています。
明るさセンサーは、まわりがどの位明るいか
明るさを測ることができます。
今回は明るさセンサーの機能と、
明るさセンサーを使った
簡単なプログラムを紹介します。
明るさセンサーとは
LED画面には明るさセンサーの機能もあり、
LED画面に当たる光の明るさを計測し、
0(暗い)~255(明るい)の値で表します。
身の回りで使われている例
- 暗くなったら自動で点灯する照明
- スマートフォン
周りの明るさによって画面の明るさを変える機能
明るくなった または 暗くなったことを
キッカケに動くものに使われています。
ゲームのマインクラフトにも
日照センサーという
明るさセンサーと同じような機能をもった
ブロックがありますね。
今回作ったプログラム
今回は、まわりの明るさによって
LEDの表示が変わるプログラムを作りました。
- まわりが暗くなるほどLEDが明るくなる
- ある明るさより明るい場合は、
「小さいダイアモンド」が表示される - ある明るさより暗くなると
「小さいダイアモンド」と
「ダイアモンド」が交互に表示される
MakeCodeエディターでプログラミング
MakeCodeエディターの画面を開いて
実際にプログラミングしてみましょう。
MakeCodeエディターの基本的な使い方は
こちらの記事をご覧ください。
プログラム
プログラムの内容は下の画像のようになります。
変数ブロック
「LEDの明るさ」という
LED画面の表示の明るさを
保管しておく変数を作ります。
変数のカテゴリで「変数を追加する」ボタンを
クリックして作ってください。
変数の値を変える「変数~を~にする」ブロックも
変数のカテゴリにあります。
データを一時的に覚えておくための入れ物のことです。
プログラムで人間が分かるように名前を付けます。
明るさブロック
「明るさ」ブロックは
LED画面に当たる光の明るさを取得し、
0(暗い)~255(明るい)の範囲で返します。
「明るさ」ブロックは、
入力カテゴリにあります。
暗くなる(=明るさの値が小さい)ほど
画面の表示を明るくしたいので、
画面の明るさの最大値255から
明るさブロックで取得した
まわりの明るさを引いた値を
変数「LEDの明るさ」に設定します。
計算カテゴリに引き算するブロックがあります。
LEDの明るさを設定するブロック
「明るさを設定する」ブロックは、
LEDの明るさを変更することができます。
真っ暗だと0、
明るくなるほど値が大きくなり
最大値は255(一番明るい)です。
直接数値を指定することもできますし、
今回のように変数などを指定することもできます。
「明るさを設定する」ブロックは、
LEDカテゴリにあります。
もし~ならブロック
「もし~なら」ブロックと
「○○>□□」ブロックなど
値をくらべるブロックは論理のカテゴリに、
「アイコンを表示」ブロックは基本のカテゴリにあります。
アイコン「小さいダイアモンド」を表示
でなければ、
アイコン「小さいダイアモンド」を表示した後
アイコン「ダイアモンド」を表示
まわりが明るい時は小さいダイアモンド、
暗い時は小さいダイアモンドとダイアモンドが
交互に表示されます。
今の明るさの値を知るには
「ボタンAが押されたとき」に
「明るさ」が表示される命令も作っておくと
現在の「明るさ」が分かるようになります。
お部屋の明るさを調べて
判定条件の値(200)を
好きな数値(0~255)にしてみましょう。
「ボタンAが押されたとき」は入力のカテゴリ、
「数を表示」は基本のカテゴリにあります。
シミュレーターで確認
プログラムが完成したら
シミュレーターで思った通りに動くかテストしましょう。
「明るさ」を使っていると、
マイクロビットの左上にコントローラーが出てくるので
丸の中をドラッグして明るさの値を変えてみてください。
実機でテストしてみよう
シミュレーターで確認できたら
マイクロビットに転送して実際に動かしてみましょう。
まとめ
入力になる「まわりの明るさ」と
出力なるLEDの「表示の明るさ」で
ちょっとややこしくなってしまいました。
ゴメンナサイ。
入力と出力を意識しながら
プログラミングしてみてください。
明るさセンサーを使った
ちょっとレベルアップした作品もあるので
よかったらチャレンジしてみてください。