micro:bitでSTEM教育:地磁気センサーを使ってみよう
キャリブレーションをするために、新たにブロックを使用する必要はありません。地磁気センサを使用したプログラムをダウンロードして起動すると、自動でキャリブレーションが呼び出されます。 LEDマトリクスに、”TILT TO FILL SCREEN”とスクロール表示されていれば、それがその画面です。 その後、LEDが2個展等下画面になり、micro:bitを傾けて、全てのLEDを点灯させれば完了です。完了したときは、スマイルマークが表示されます。
micro:bitの地磁気センサのキャリブレーションどんな物が作れる?
プログラミング
1.磁気センサの計測値を取得 磁気センサの計測値は、「方角(°)」「磁力(μT)」の2種類あります。 「方角(°)」 は、ツールボックスの「入力」の中にあります。「磁力(μT)」は、「入力→その他」の中にあります。 方角は、北を0°、東を90°、南を180°、西を270°という値で取り扱います。 磁力(μT) は、μT(マイクロテスラ)という単位で扱われます。1万ガウスが1テスラなので、地磁気0.45ガウスは、45マイクロテスラとなります。それぞれの計測値を変数に取り込むため、ツールボックスの「変数」から変数追加をします。
2.計測値をLEDに表示する Aボタンを押したときに、方角を数字でLEDで表示します。「論理」から「もし~なら」と、「入力」から「ボタンAが押されている」を組み合わせて、その中に「基本」の「文字列を表示」で、方角を表示します。 同様に、Bボタンを押したときは、3軸の磁力と絶対値を表示します。文字列をつなげて表示するブロックは、「高度なブロック→文字列」の中にあります。
3.方角を矢印で表示する 方位磁針と同じように、LEDマトリクスに矢印を表示させ、その矢印が北(0°)を向くようにします。矢印のパターンは8方向とします。したがって、1つの角度に割り当てる角度は、360°÷8=45°となります。例えば、東(90°)の矢印を表示する範囲は、地磁気センサの方角が90°±22.5°となりますので、 「方角(変数compass)≧ 67.5 かつ 方角 (変数compass) let compass = 0 let X = 0 let Y = 0 let Z = 0 let Abs = 0 basic.forever(function () < compass = input.compassHeading() X = input.magneticForce(Dimension.X) Y = input.magneticForce(Dimension.Y) Z = input.magneticForce(Dimension.Z) Abs = input.magneticForce(Dimension.Strength) if (input.buttonIsPressed(Button.A)) < basic.showString("" + compass) >if (input.buttonIsPressed(Button.B)) < basic.showString("" + X + Y + Z + Abs) >if (compass >= 22.5 && compass < 67.5) < basic.showLeds(` . # # # # . . . # # . . # . # . # . . # # . . . . `) >else if (compass >= 67.5 && compass < 112.5) < basic.showLeds(` . . # . . . . . # . # # # # # . . . # . . . # . . `) >else if (compass >= 112.5 && compass < 157.5) < basic.showLeds(` # . . . . . # . . # . . # . # . . . # # . # # # # `) >else if (compass >= 157.5 && compass < 202.5) < basic.showLeds(` . . # . . . . # . . # . # . # . # # # . . . # . . `) >else if (compass >= 202.5 && compass < 247.5) < basic.showLeds(` . . . . # # . . # . # . # . . # # . . . # # # # . `) >else if (compass >= 247.5 && compass < 292.5) < basic.showLeds(` . . # . . . # . . . # # # # # . # . . . . . # . . `) >else if (compass >= 292.5 && compass < 337.5) < basic.showLeds(` # # # # . # # . . . # . # . . # . . # . . . . . # `) >else < basic.showLeds(` . . # . . . # # # . # . # . # . . # . . . . # . . `) >>)
まとめ
Reader Interactions
コメント- taiyo kanei says 2021年5月20日 at 10:51 AM
- STEMSHIP says 2021年7月13日 at 8:29 AM
このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。
最初のサイドバー
CONTACT US More to See Arduinoベースのセンサノード:XBeeデータ収集ノードの製作 Arduinoベースのセンサノード:Arduinoを使った温度センサの作製 XBeeモジュールとBMP280センサを使用してデータ収集する XBeeモジュールでMicroPythonを使ってセンサを読み取る XBeeモジュールでセンサを読み取る:センサノードの設定と測定 カテゴリー TagsFooter
最近の投稿- Arduinoベースのセンサノード:スケッチ(プログラム)の作製
- Arduinoベースのセンサノード:XBeeデータ収集ノードの製作
- Arduinoベースのセンサノード:Arduinoを使った温度センサの作製
- XBeeモジュールとBMP280センサを使用してデータ収集する
- XBeeモジュールでMicroPythonを使ってセンサを読み取る
Copyright © 2026 · STEMSHIP.COM