micro:bit で方位磁石(コンパス)を作ろう

プログラミング

micro:bitには基板上に複数のセンサーが予め実装されています。
その中の磁気センサー(Compass)を使い方位磁石(コンパス)を作ってみましょう。

方角の取得

磁気センサーを使って方角を取得する必要があります。
どうやれば方角を取得できるでしょうか?

micro:bitでは方角を取得するブロックが準備されているのでそのブロックを使うだけで方角を取得する事ができます。

まずは取得した方角の値を表示するプログラムを作ってみましょう。

「基本」の「数を表示「0」」ブロックと「入力」の「方角(°)」ブロックを使い以下のように配置します。

方角の値を表示するプログラム

「方角(°)」ブロックを有効にする(使っている状態)にするとシミュレーターに方角を変更する矢印が表示されます。

シミュレーターに方角を変更する矢印が表示される

方角は0°~359°の360段階で取得できます。

ちなみにこの角度は時計回りに増加し、北を中心にどれだけ角度がついているのかを表現しています。

micro:bit本体の方角と取得する角度の関係

矢印の表示

方角の数字でも頭の中で変換すればどっちを向いているのか分かりますがとても方位磁針とは呼べません。
そこで矢印を使って北を指し示すようにプログラムする事で方位磁針になるのではないでしょうか。

これを実現するために矢印を表示する方法を実際にやってみましょう。

「基本」の「その他」に「矢印を表示「上向き ↑」」ブロックがあります。

これを使えば矢印を簡単に表示させる事ができます。

「矢印を表示「上向き ↑」」ブロック
シミュレーターで上向き矢印を表示

矢印の向きは全部で8方向あります。

矢印は全部で8方向

方角で表示する矢印を分岐

方角の取得と矢印の表示を組み合わせる事で方位磁針を作る事ができます。

分岐には「論理」の「条件判断」ブロックを使うのですがまずはどの方角の時にどの矢印を表示するのかを決めなければいけません。

厳密に求めるなら計算式が良いのですがとりあえず以下のような仕様とします。

表示する矢印の向きとmicro:bitの方角範囲の関係

実際にこれをプログラミングしてみるとこうなりました。

方角による矢印表示のプログラミング

見難いですね(^^;

まんま図の通りにプログラミングしているので難しくないと思います。

micro:bit(マイクロビット)

価格:2,530円
(2020/2/23 07:01時点)
感想(0件)

micro:bit用 単四電池2本をJST PHコネクタで出力できる電池ボックス KITRONIK-2271

価格:187円
(2020/2/23 07:00時点)
感想(0件)

micro:bitで確認

今回作成したコンパスはシミュレーターではなくmicro:bit本体にダウンロードして確認してみましょう。
シミュレーターでは方角を変えれば矢印の向きが変わる事が確認できますがこれで本当に北を指しているのか判断できません。
ダウンロードできたらmicro:bitを回して北を指している事を確認しましょう。

作成したプログラムをPCへダウンロードします。
プログラム画面左下の「ダウンロード」をクリックします。

プログラムをダウンロード

任意のフォルダへダウンロードすると拡張子が「.hex」というファイルが保存されます。

USBでmicro:bitを繋げて先ほどダウンロードした「~.hex」ファイルを右クリックのメニューの中から「送る」の「MICROBIT」をクリックします。

転送が完了するとLEDに「TILT TO FILL SCREEN(傾けて画面を埋めて)」と表示され、LEDの中心が点滅するのでmicro:bitを傾けて点滅する点でLED全体を光らせましょう。(点滅する点が通ったLEDは点灯する)

コンパスの調整

実はこの行為はコンパスの調整をする物でコンパスを使ったプログラムを作った場合には必ず行う必要があります。

全てのLEDを光らせたらスマイルマークが表示されて実際にプログラムが実行されます。

北を指している

更なる改善

上記のプログラミングは規則性が有り長くなっているので改善の余地は有ると思います。(面倒になったので放棄しちゃった)

作ったら終わりではなく更に改善はできないか考えるとプログラミングの力も付いてくると思います。

指南車の作成

方位磁針は北を示す道具です。

中国には「指南車」という物があり、名前の通り南を示す車で迷わず都へ帰れるように発明された物です。(この「指南車」は磁石を使わずに作られたそうでその発想がすばらしいですね)

今回の提案はもちろん磁石(磁気センサー)を使います。

ただ単純に南を示す道具に作り替えてみましょうという提案です。

方位磁針を作ってしまえば何ら難しい事はないですね。

まとめ

磁気センサーを使ったプログラミングはいかがでしたか?

センサーを使うと言っても単にその値を取得するブロックを使うだけなので難しいところは無かったと思います。

注意すべきは方角の値と向いている方向の関係を把握する必要がある事です。

micro:bitには他にもセンサーを実装しているので次は違うセンサーを使ったプログラミングの紹介をしようと思います。

コメント

タイトルとURLをコピーしました