micro:bitで遊んでみよう!(6)〜コンパス編〜
皆さんこんにちは、シオナイト(@sheonite)です。前回からずいぶん間が空いてしまいましたが、今回もmicro:bitを使って遊んでみようと思います。
micro:bitの標準機能として搭載されている、地磁気センサーを使ったコンパス(方位磁石)作りです。
とりあえず北を教えるコンパス
今回もプログラミングはmicro:bitのMakeCodeから行います。
今回使用するのはこういうブロックです。論理式が入ってきてますね。
まず、基本となる「ずっと」ブロックに、条件分岐をさせる論理ブロック「もし〜なら〜でなければ」を噛ませます。
「もし」の条件に、更に論理ブロックの「または」をくっつけます。
で、「または」の左右に開いてるスペースに、論理ブロックの「大なり小なり」的なブロックをはめ込みます。比較演算子でいいのかな?
ややこしくなってまいりました(笑)。今回は地磁気センサーから方角のデータを入力しますので、入力ブロックから「方角」を引っ張りだして、比較演算子ブロックの左側にはめ込みます。
地磁気センサーが検知する方角は数値として反映されるのですが、これがちょっとややこしくて、真北を「0」として、時計回りに「1,2,3…」と数値が増えていきます。「0〜359」の360段階(度)で方角を示しますので、
北 | 0 |
北東 | 45 |
東 | 90 |
南東 | 135 |
南 | 180 |
南西 | 225 |
西 | 270 |
北西 | 315 |
方角と数値の関係はこんな感じですね。
とりあえず北西から北東の間を「N(北)」と表示させることにしますので、数値は次のようになります。
地磁気センサーの返す値が北西の「315」より大きい、または北東の「45」よりも小さい場合に次の動作を実行するように設定しました。
あとは表示させるだけ。値が範囲内なら「N」を表示させ、範囲外の場合は表示を消します。ブロックの組み方はこんな感じ。
では、プログラムをmicro:bitにインストールして実行してみましょう。インストールの方法については第3回を御覧ください。
ちなみに、micro:bitに地磁気センサーを使用するプログラムをインストールすると、初回起動時にセンサーがイニシャライズされるのか、動作確認のプログラムが実行されます。
LEDに「DRAW A CIRCLE」という文字が流れ、LEDの1箇所が点滅を始めます。要は本体を傾けて円を描けってことですね。
北を向けると「N」を表示するコンパスが動いているところはこんな感じです。
うまくいきましたね。一安心です(笑)
東西南北を教えるコンパスのはずが…
折角なので、北以外にも方角を表示するプログラムを作ってみましょう。多分、条件分岐を4つ作るだけだな。簡単簡単。
さっき作ったプログラムのブロックを右クリックで複製します。
あとは先程示した方角の数値に入れ替えていくだけです。
う〜ん、なんかスマートじゃないなぁ。とりあえず実機に入れて実行してみるか。
あれ?なんかすごい勢いで点滅してるぞ!?
ちゃんとやったつもりなのになぁ。そうだ、条件分岐を入れ子にしてみるか。
これでどうだ!
あれ?今度は「N」と「E」しか表示されない。このmicro:bit壊れてるんじゃねぇの?
…
…
あ!
「かつ」と「または」を間違えないで
ない頭を捻って気が付きました。論理式間違ってるんじゃないかと。これ「または」じゃなくて「かつ」なんじゃないか、と。
「N」だけを表示させる場合は「または」でも問題なかったのですが、論理式を2つ以上入れた場合は条件が被ってしまうケースが出てくるので、さっきみたいに変な表示になってしまうんですね。
修正したのがこちら。
今回は「E」でも「W」でも「S」でもなければ「N」を表示する条件に変えて、全体をちょっと短くしてみました。
実機で動作確認です。
うまくいきましたね(安堵)
今回はいままでのようにすんなりいかずに苦労しましたが、うまくいかない原因を探す時間も、それはそれで楽しかったりします。
まぁ、これが仕事レベルになると大変なんでしょうけどね。
さて、次はなにか、音を鳴らすようなプログラムを作ってみようかな。
micro:bitではじめるプログラミング 第2版 ―親子で学べるプログラミングとエレクトロニクス (Make: KIDS)
ディスカッション
コメント一覧
まだ、コメントがありません