本記事ではmicro:bitの地磁気センサーを使いこなせるようになることを目指して解説します。
- 【microbit】地磁気センサーの使い方【方角を取得】
- 【microbit】地磁気センサーを使ったコンパスプログラムの作り方
実際のプログラム例と実行結果を示しながら解説します。
【microbit】地磁気センサーの使い方【方角とコンパス】
micro:bitには地磁気を測定する地磁気センサーがあります。
地磁気センサーとは?ざっくり解説
地磁気センサーは地球の磁場(=地磁気)を測定するセンサーです。
地球は北極をS極、南極をN極とする大きな磁石のような存在で、磁場があります。
この磁場の方向(方角)や大きさを測定できるセンサーがmicro:bitにも搭載されています。
micro:bitの地磁気センサー
micro:bitの地磁気センサーで取得できる値は方角と磁場の大きさです。
方角(°)
micro:bitの地磁気センサーはmicro:bitの上が北を向いているときに0°を示し、時計回りに0°~359°で方角を示します。つまり、micro:bit本体の向きを変えることで取得する方角が変わります。
磁場の大きさ
micro:bitの地磁気センサーはX軸、Y軸、Z軸の3方向の磁場の大きさを取得できます。
ただ、詳しい使い方はわからなかったので、わかり次第更新しますね。
地磁気センサーを使ってできること
地磁気センサーを使うと下記のようなことができます。
- micro:bitが向いている方角を調べる
- コンパス(方位磁針)のように北を指し続ける
上記のとおりです。ぜひ、使い方をマスターしましょう!
「方角(°)」ブロック(方角の角度)
地磁気センサーで取得した値は「方角(°)」ブロックに数値で保存されています。
地磁気センサーで取得できる方角の角度は0°~359°です。
これは先程解説したとおりですね。
方角を表示
実際に地磁気センサーで取得した方角をLEDディスプレイに表示してみましょう。
作ったプログラムはこんな感じです。micro:bitが向いている方角(90°(東))をLEDディスプレイに表示しています。
シミュレーターを使う場合は、ロゴを回転させればmicro:bitの向きを変えたことと同じ状態を作ることができます。これで擬似的に方角を変えることができます。
地磁気センサーの調整(キャリブレーション)
次は作ったプログラムをmicro:bitに書き込んで実行してみましょう。
ただし、地磁気センサーを使ったプログラムを書き込んで実行するときには「地磁気センサーの調整(キャリブレーション)」をしなければいけません。
プログラムを書き込むと下記のようにLEDディスプレイに「TILT TO FILL SCREEN」と表示されることがあります。
これは「micro:bitを傾けてLEDディスプレイを埋めてください(LEDを全部点灯させてください)」という意味です。やり方は動画をご覧ください。
これで地磁気センサーを正しく使えるようになりました!
「コンパスを調整する」ブロック
この命令は前述の地磁気センサーの調整(キャリブレーション)を行なう命令です。
高い精度で地磁気センサーを利用するなら、実際に使用する場所で地磁気センサーを調整(キャリブレーション)する必要があります。
例えば、ボタンAとボタンBを押すとコンパスの調整を実行するプログラムは次のとおりです。
【microbit】地磁気センサーを使ったコンパスプログラムの作り方~向いている方角を示すプログラム~
micro:bitの向きを変えると向いている方角を1文字で示すプログラムを作りましょう。
方角は次のように1文字で表示することにします。1文字だとスクロールしなくて見やすいので。
- 北・・・N(North)
- 東・・・E(East)
- 南・・・S(South)
- 西・・・W(West)
プログラムの考え方
では、実際にプログラムを作っていきます。
プログラムの考え方は次のとおりです。
- 角度を取得する
- 角度がどの方角に当てはまるか判断する
- 当てはまった方角を表示する
上記のとおりです。ここで大事なのは「2.角度がどの方角に当てはまるか判断する」です。
角度と方角の関係
あらかじめ、センサーで取得した値をどの方角として表示するかを決めておく必要があります。
センサーで取得した角度と表示する方角の関係は次のようにします。
例えば、0°のときにN(北)を表示するわけですが、0°ぴったりのときだけ表示するのだとイマイチですよね?(1°のときは何も表示しないことになるので。)
なので、0°を中心に左右45°ずつはN、90°を中心に左右45°ずつはEのようにしているわけです。
これを表にまとめると次のとおりです。こんな感じで表にまとめると曖昧な部分がなくなって、プログラムのバグが減りますよ。
センサーで取得した値の範囲 | 表示内容 |
0~45 | N |
46~135 | E |
136~225 | S |
226~315 | W |
316~359 | N |
プログラミング
以上の考え方でプログラムを作ると次のとおりです。
※実行結果は▶ボタンを押してから確認してみてください。
ここで、プログラムのポイントが2つあります。
- Nを表示するときの条件判定
- 変数にセンサーの取得値を代入
詳しく解説します。
Nを表示するときの条件判定
Nを表示するときの角度の範囲は2つにわけなければいけません。
- ① 0°~45°
- ② 316°~
それが次の部分です。
「1~4個目の判定条件にいずれにも当てはまらないとき = 316°以上」とすることで2つ目の条件を満たすようにしています。
変数にセンサーの取得値を代入
今回のプログラムでは「方角」変数を作ってセンサーで取得した値を代入して条件判定に使っていますが、下記のようにセンサーで取得した値をそのまま条件判定に使っても良さそうな気がしますよね?
実はこのプログラムは危険です。というのは、センサーで取得した値は常に変化しているからです。
つまり、それぞれの条件判定処理が実行されるタイミングでセンサーの値が変わっているかもしれないということです。
例えば、2個目の条件判定のタイミングで方角の値は136°なのに、3個目の条件判定タイミングでは135°に変わっているかもしれません。
そうすると、どの条件も満たさないので最後の「でなければ」に当てはまり、想定した動作にならなくなってしまいます。
なので、条件判定する前にセンサーの値を変数に代入しています。変数の値は意図的に書き換えないと変わらないですからね。
下記にもう一度プログラムを載せておきます。
【microbit】地磁気センサーを使ったコンパスプログラムの作り方~常に北を指すプログラム~
micro:bitの向きを変えても常に北を指すプログラムを作りましょう。
プログラムの考え方
では、実際にプログラムを作っていきます。
プログラムの考え方は次のとおりです。
- 角度を取得する
- 角度に応じてどの矢印を表示するか判断する
- 矢印を表示する
上記のとおりです。ここで大事なのは「2.角度に応じてどの矢印を表示するか判断する」です。
角度と矢印の関係
あらかじめ、センサーで取得した値に応じてどの矢印を表示するか決めておく必要があります。
センサーで取得した角度と表示する矢印の関係は次のようにします。
こちらも表にまとめます。
センサーで取得した値の範囲 | 表示内容 |
0~22 | ↑ |
23~67 | ↖ |
68~112 | ← |
113~157 | ↙ |
158~202 | ↓ |
203~247 | ↘ |
248~292 | → |
293~337 | ↗ |
338~359 | ↑ |
プログラミング
というわけで、以上の考え方でプログラムを作ると次のとおりです。
※実行結果は▶ボタンを押してから確認してみてください。
まとめ
本記事のおさらいです。
- 地磁気センサーの値は「方角(°)」ブロックに数値で保存される
- 数値の範囲は0°~259°(北が0°)
- 地磁気プログラムを書き込むとセンサーの調整(キャリブレーション)が必要
- 地磁気センサーを使えばコンパスプログラムを作れる
- センサーの値を利用するには一度変数に代入すると良い
上記のとおりです。
それでは、micro:bitを楽しんでください(^_^)/~