前回はボタンの状況によってアイコンの表示が変わるプログラムを作りました。
センサーは、私たちの周りの世界から情報を集める小さな機械の一種です。例えば、スマートフォンにはたくさんのセンサーが入っていて、画面がどの向きにあるのか、どれくらい明るいか、どれくらい近くに何かがあるかなどを感知します。
Micro:bitにもセンサーがあります。例えば、温度センサーは周囲の気温を測ります。これは、外の気温がどれくらいかを知りたい時に使います。もう一つの例は動きセンサーです。これはMicro:bitを動かしたとき、その動きを感知します。これを使って、例えば揺れる椅子の安全性をテストするようなプロジェクトができます。
センサーは、私たちの周りの世界を「見たり」「感じたり」するための道具です。Micro:bitを使って、これらのセンサーがどのように機能するかを学ぶことで、科学や技術について楽しく学ぶことができます。
今回はそれぞれのセンサーを使って色んなプログラムを作ってみましょう。
センサーの動作確認方法
PCの場合
micro:bitのセンサーの状態をパソコンで確認する方法があります。
シリアル通信はパソコンなどのmicro:bit以外のコンピュータとUSBケーブル経由で通信するためのブロックです。
センサーの状態をシリアル通信でパソコンに送りたい為、シリアル通信 1行書き出すブロックを使います。
ずっとブロックにはさみ、書き出す中身に入力のセンサーブロックを入れます。
micro:bitに書き込みます。
ダウンロードが終わるとシミュレータの下に、データを表示 デバイスというボタンが出現しますのでクリックします。
するとリアルタイムにmicro:bitから送られてくるセンサーの値と時間経過のグラフを確認することが出来ます。
この機能を使ってセンサーの値を確認しながら様々なプログラムを作っていきましょう。
micro:bit単体の場合
少し見辛いですが、micro:bit単体でもセンサーの値を確認できます。
数を表示ブロックをずっとブロックに挟みます。
数を表示ブロックの中に、確認したいセンサーの値を入れます。
するとmicro:bitのLEDディスプレイに値が表示されます。
2桁以上の数字は表示するのに時間がかかるため、リアルタイムの計測は出来ません。
タッチセンサ
タッチセンサーは、基本的には人の指がmicro:bitの特定の部分に触れたときに反応するセンサーです。このセンサーは、電気の導体である人の体に触れることで、電気的な信号を検出し、micro:bitに信号を送ります。
例えば、micro:bit V1では、基板上の大きな銅箔P0~2がタッチセンサーとして機能します。GND端子を触りながら、人間がこの部分に触れることで、micro:bitがそのタッチを感知し、プログラムされた特定の動作を行うように設定できます。ボタンのように使われることが多いです。
micro:bit V2では、V1のタッチセンサに加えて、前面にあるLOGOがタッチセンサーとして動作します。
仲良しメータを作ってみよう
友達と手をつなぎ、GND端子と0番端子を触れるとなかよし度合いが表示される装置を作ってみます。
タップされたときブロックと乱数ブロックを使います。
乱数ブロックは発動するとランダムな数字を出してくれます。今回は0~10までのランダムな数字を表示させます。
仲良し度合いはランダムに表示されますので、0でも落ち込まないでください。
練習問題
上の仲良しメーターでこっそりAボタンを押しながらタッチすると必ず10がでるようにするにはどうしたらよいでしょう?
答えはこちら
加速度センサ(かそくど)
加速度センサーは、micro:bitがどのように動いているかを測定する小さなデバイスです。このセンサーは、micro:bitが上下、左右、前後のどの方向に動いたか、またどれくらいの速さで動いたかを感知することができます。
具体的には、加速度センサーは、micro:bitが加速(速く動く)、減速(遅く動く)、または回転(回る)するときに発生する力を測定します。
このセンサーは、様々な面白いプロジェクトに使うことができます。例えば、micro:bitを傾けることでゲームのキャラクターを動かしたり、揺れを感知して地震計として使用したりすることができます。また、micro:bitを振ることでランダムな数を生成するサイコロのように使うことも可能です。
皆さんが良く見るスマートフォンにも搭載されており、動画を見ている際にスマホを横に傾けると画面も横向きになります。最新機種では事故などの衝撃を検出して、自動で救助を呼ぶシステムも搭載されています。
micro:bitには裏面に搭載されています。
電子サイコロをつくってみよう
micro:bitを揺さぶったら1~6までの数字がランダムに表示されるサイコロを作ってみます。
ゆさぶられたときブロックを使うと加速度センサを使って、micro:bitが揺さぶられたときに挟まれたブロックを発動させることが出来ます。
そこに先ほどの乱数ブロックを使って、サイコロを作ってみましょう。
シミュレータ上ではSHAKEボタンを押すと、揺さぶったことになります。
練習問題
このままだと同じ数字が連続で出たときに、きちんとサイコロが振り直しできているか分かりません。
数字が表示される前にアニメーションが表示されるようにしてみましょう。
例:
こたえはこちら
練習問題2
友達とサイコロバトルをするときに、絶対に勝てるようにしたいですね。
こっそりAボタンを押しながらサイコロを振ると必ず6が出るイカサマサイコロを作ってみましょう。
こたえはこちら
温度センサ
この温度センサーは、micro:bitの内部温度を測定するためのセンサーです。具体的には、micro:bitのメインプロセッサに組み込まれており、周囲の空気温度ではなく、micro:bit自体の温度を測定します。これは、周囲の気温に影響されることがあるため、厳密な気温計測用途には向いていないことに注意が必要です。
例えば、micro:bitを使って、部屋の温度が変化したときに警告を出すシステムを作ったり、温度に基づいてファンを制御するシステムを作ることが可能です。
プログラミングでは、Micro:bitのAPIを使用して温度データを読み取り、その情報を利用して様々な機能を実装できます。たとえば、特定の温度に達したときにLEDを点灯させる、あるいはメッセージを表示するといったことが可能です。
温度を表示するプログラムは以下の通りです。
温度センサーを指で触ると、表示される数字が大きくなることを確認してみてください。
熱中症警戒装置(ねっちゅうしょうけいかい)をつくってみよう
28度より温度が下だとうれしい顔のアイコン、29度を超えると悲しい顔のアイコンが表示されるプログラムを作ってみましょう。
こたえはこちら
明るさセンサ
micro:bitの明るさセンサーは、周囲の光の明るさを測定するセンサーです。このセンサーは、光を感知してその強さを測定し、数値としてmicro:bitに伝えます。つまり、micro:bitはこのセンサーを使って、周りがどれくらい明るいかを知ることができるのです。
たとえば、窓の近くにmicro:bitを置いた場合、外が晴れていればセンサーはたくさんの光を感知し、数値は高くなります。逆に、曇りの日や夜間は、少ない光しか感知しないので数値は低くなります。
この明るさセンサーを使うと、部屋が暗くなったら自動でライトをつけるシステムや、明るさに応じて異なるメッセージを表示するプログラムなどです。また、光の強さに反応して音楽を奏でるようなインタラクティブなアート作品を作ることも可能です。
micro:bitはLEDの部分が明るさセンサになっています。
これは、Aボタンが押されたときの明るさの大きさを図るプログラムです。
明るさセンサを太陽に向けてみたり、手で隠したりして、数字が変わることを確認してみましょう。
明るさに反応するセンサーライトを作ってみよう
暗くなった時だけ、LEDが点灯するセンサーライトを作ってみましょう。
こたえはこちら
コンパスセンサ
コンパスセンサ、または磁気センサは、地球の磁場を感知して、どの方向を向いているかを検出するセンサーです。地球は大きな磁石のようなもので、北極と南極に磁場があります。この磁場をコンパスセンサは感知し、それによって北を指し示します。
micro:bitのコンパスセンサを使用すると、方位を知ることができます。例えば、micro:bitを使って簡単な電子コンパスを作成したり、方向に応じて異なるアクションをするプログラムを作ることができます。
しかし、コンパスセンサーは金属や他の磁場の影響を受けやすいため、正確な測定のためには、他の磁気を発する物体から離れた場所で使用する必要があります。また、初めて使用する際には、センサーを正確に校正(キャリブレーション)する必要があります。これは、micro:bitを様々な方向に傾けて、センサーが周囲の磁場を正しく読み取れるようにします。
キャリブレーションの方法
コンパスセンサをプログラムに用いると、起動後のLED画面に「TILT TO FILL SCREEN」という表示が流れます。
その後、点滅するLEDが現れます。
点滅すLEDはmicro:bitを傾けると、その方向に動きます。
micro:bit本体を左右上下に傾けるなど動かして、すべてのLEDが点灯する状態にします。
うれしい顔が表示されれば成功です。
コンパスセンサの値
コンパスセンサは0~359の間で数字が変化し、北が0になるような値になっています。
いろんな方向に向けて北を見つけてみましょう。
電子コンパスを作ってみよう
micro:bitを北に向けるとNと表示されるプログラムを作ってみましょう
こたえはこちら
応用編:
常に北に矢印⇒が向き続ける高性能コンパスを作ってみましょう