micro:bitで遊んでみよう!(6)〜コンパス編〜

2019年6月19日

micro:bitでコンパス

皆さんこんにちは、シオナイト(@sheonite)です。前回からずいぶん間が空いてしまいましたが、今回もmicro:bitを使って遊んでみようと思います。

micro:bitの標準機能として搭載されている、地磁気センサーを使ったコンパス(方位磁石)作りです。

とりあえず北を教えるコンパス

今回もプログラミングはmicro:bitのMakeCodeから行います。

MakeCodeの画面
MakeCodeの画面

今回使用するのはこういうブロックです。論理式が入ってきてますね。

これらを組み合わせます
これらを組み合わせます

まず、基本となる「ずっと」ブロックに、条件分岐をさせる論理ブロック「もし〜なら〜でなければ」を噛ませます。

もし〜なら〜でなければ
もし〜なら〜でなければ

「もし」の条件に、更に論理ブロックの「または」をくっつけます。

「または」ブロック
「または」ブロック

で、「または」の左右に開いてるスペースに、論理ブロックの「大なり小なり」的なブロックをはめ込みます。比較演算子でいいのかな?

名称がわからない「大なり小なり」?
名称がわからない「大なり小なり」?

ややこしくなってまいりました(笑)。今回は地磁気センサーから方角のデータを入力しますので、入力ブロックから「方角」を引っ張りだして、比較演算子ブロックの左側にはめ込みます。

今回の入力値は「方角」
今回の入力値は「方角」

地磁気センサーが検知する方角は数値として反映されるのですが、これがちょっとややこしくて、真北を「0」として、時計回りに「1,2,3…」と数値が増えていきます。「0〜359」の360段階(度)で方角を示しますので、

0
北東45
90
南東135
180
南西225
西270
北西315

方角と数値の関係はこんな感じですね。

とりあえず北西から北東の間を「N(北)」と表示させることにしますので、数値は次のようになります。

北西から北東の値を指定
北西から北東の値を指定

地磁気センサーの返す値が北西の「315」より大きい、または北東の「45」よりも小さい場合に次の動作を実行するように設定しました。

あとは表示させるだけ。値が範囲内なら「N」を表示させ、範囲外の場合は表示を消します。ブロックの組み方はこんな感じ。

北を向いたら「N」を表示
北を向いたら「N」を表示

では、プログラムをmicro:bitにインストールして実行してみましょう。インストールの方法については第3回を御覧ください。

ちなみに、micro:bitに地磁気センサーを使用するプログラムをインストールすると、初回起動時にセンサーがイニシャライズされるのか、動作確認のプログラムが実行されます。

LEDに「DRAW A CIRCLE」という文字が流れ、LEDの1箇所が点滅を始めます。要は本体を傾けて円を描けってことですね。

北を向けると「N」を表示するコンパスが動いているところはこんな感じです。

うまくいきましたね。一安心です(笑)

東西南北を教えるコンパスのはずが…

折角なので、北以外にも方角を表示するプログラムを作ってみましょう。多分、条件分岐を4つ作るだけだな。簡単簡単。

さっき作ったプログラムのブロックを右クリックで複製します。

ブロックをコピー
ブロックをコピー

あとは先程示した方角の数値に入れ替えていくだけです。

条件分岐を4つ作った
条件分岐を4つ作った

う〜ん、なんかスマートじゃないなぁ。とりあえず実機に入れて実行してみるか。

あれ?なんかすごい勢いで点滅してるぞ!?

ちゃんとやったつもりなのになぁ。そうだ、条件分岐を入れ子にしてみるか。

入れ子にした条件分岐
入れ子にした条件分岐

これでどうだ!

あれ?今度は「N」と「E」しか表示されない。このmicro:bit壊れてるんじゃねぇの?

あ!

「かつ」と「または」を間違えないで

ない頭を捻って気が付きました。論理式間違ってるんじゃないかと。これ「または」じゃなくて「かつ」なんじゃないか、と。

「または」をクリックすると「かつ」を選べる
「または」をクリックすると「かつ」を選べる

「N」だけを表示させる場合は「または」でも問題なかったのですが、論理式を2つ以上入れた場合は条件が被ってしまうケースが出てくるので、さっきみたいに変な表示になってしまうんですね。

修正したのがこちら。

コンパスのコード(修正版)
コンパスのコード(修正版)

今回は「E」でも「W」でも「S」でもなければ「N」を表示する条件に変えて、全体をちょっと短くしてみました。

実機で動作確認です。

うまくいきましたね(安堵)

 

今回はいままでのようにすんなりいかずに苦労しましたが、うまくいかない原因を探す時間も、それはそれで楽しかったりします。

まぁ、これが仕事レベルになると大変なんでしょうけどね。

さて、次はなにか、音を鳴らすようなプログラムを作ってみようかな。

micro:bitではじめるプログラミング 第2版 ―親子で学べるプログラミングとエレクトロニクス (Make: KIDS)

micro:bitではじめるプログラミング 第2版 ―親子で学べるプログラミングとエレクトロニクス (Make: KIDS)

スイッチエデュケーション編集部
5,991円(04/19 07:52時点)
Amazonの情報を掲載しています