本記事ではmicro:bitの加速度センサーを使いこなせるようになることを目指して解説します。
- 【microbit】加速度センサーの使い方【動作を検出】
実際のプログラム例と実行結果を示しながら解説します。
【microbit】加速度センサーの使い方【動作を検出】
micro:bitには加速度を測定する加速度センサーがあります。
加速度センサーとは?ざっくり解説
加速度センサーは1秒間の速度変化を測定するセンサーです。
例えば、10[m/s]の速度で走っている車が1秒後も10[m/s]のままだったら加速度は0[m/s2]です。速度が変化していないので。
一方、10[m/s]の速度で走っている車が1秒後に20[m/s]になれば加速度は10[m/s2]です。(1秒間で10[m/s]加速したから。)
上記の加速度を測定できるセンサーがmicro:bitにも搭載されています。
micro:bitの加速度センサー
micro:bitの加速度センサーはX軸、Y軸、Z軸の3つの加速度を測定できます。
また、各軸の加速度を測定したときの値は次のとおりです。例えば、X軸の加速度が-1023なら左方向に加速させたという意味です。
この数値は加速度が1023[m/s2]という意味ではなく、1G(=約9.8[m/s2])を0~1023の1024段階で表しているということです。
あと、「なんで、最大が1023なの?1000の方がキリ良くない?」と思われるかもですが、コンピューターはデータを2進法で表現しているので、実はキリが良いんです。
加速度センサーを使ってできること
加速度センサーを使うと下記のようなことができます。
- micro:bitが傾いている方向を調べる
- micro:bitの傾きにあわせてゲームを操作する
- 歩いた歩数をカウントする(万歩計)
上記のとおりです。ぜひ、使い方をマスターしましょう!
「加速度」ブロック(加速度センサーの値)
加速度センサーで取得した加速度は「加速度」ブロックに数値で保存されています。
加速度センサーで取得した加速度は次のとおりです。
これは先程解説したとおりですね。ただ、後述する方法を使うともっと広い範囲で計測できます。
加速度センサーの値を表示
実際に加速度センサーで取得した値をLEDディスプレイに表示してみましょう。
作ったプログラムはこんな感じです。ax、ay、azというのが各軸の加速度で、az(Z軸)が-1023になっているのは下向きに重力(重力加速度)が働いているからです。
シミュレーターを使う場合はmicro:bitの上にマウスカーソルを乗せるとmicro:bitを動かすことができます。これで擬似的に加速度を発生させられます。
また、加速度ブロックの中に「絶対値」というのがあります。
これは次の計算をしたものが表示されます。
簡単に言うと、どっちの方向に加速度が発生しているかは関係なく、加速度の大きさだけを表示しています。詳しい説明は割愛します。
「加速度センサーの計測範囲を設定する」ブロック
この命令は加速度センサーの計測範囲を1倍、2倍、4倍、8倍に変更する命令です。
この命令を実行すると加速度センサーの計測範囲が次のようになります。
- 1G(=1倍)・・・-1023~1023
- 2G(=2倍)・・・-2046~2046
- 4G(=4倍)・・・-4092~4092
- 8G(=8倍)・・・-8184~8184
例えば次の表の通りで、計測範囲を2Gに設定しておいて3Gの加速度を発生させても最大2046にしかなりませんが、計測範囲を4Gにすれば3069を計測できるというわけです。
計測範囲設定 | 発生加速度 | 加速度ブロックの値 |
1G | 3G | 1023 |
2G | 2046 | |
4G | 3069 | |
8G | 3069 |
より大きな加速度を計測したいときは「最初だけ」ブロックで計測範囲設定をしましょう。
「ゆさぶられたとき」ブロック
この命令は加速度の検出をきっかけに動作するプログラム作る開始命令です。
また、「ゆさぶられた」の部分は次の11種類から種類から選べます。
命令 | 開始条件 |
ゆさぶられた | micro:bitをゆさぶったとき |
ロゴが上になった | micro:bitをロゴが上向きになるように立てたとき |
ロゴが下になった | micro:bitをロゴが下向きになるように立てたとき |
画面が上になった | micro:bitをLEDディスプレイが天井を向くようにしたとき |
画面が下になった | micro:bitをLEDディスプレイが床を向くようにしたとき |
左に傾けた | micro:bitをボタンA方向に傾けたとき |
右に傾けた | micro:bitをボタンB方向に傾けたとき |
落とした | micro:bitを落とした(自由落下させた)とき |
3G/6G/8G | micro:bitに重力の3倍/6倍/8倍の加速度をかけたとき |
上記の通りでして、micro:bitがその状態になったタイミングでプログラムが動き出します。
つまり、左に傾けた最初は検出しますが、左に傾けた状態のまま動かさなかったらそれ以降は検出しません。
「ゆさぶられた動き」ブロック
この命令は各種動作が現在検出されているかどうかを判定する命令です。
「ゆさぶられたとき」ブロックはゆさぶられたタイミングを検出する命令でしたが、この命令は現時点でその動作をしているかどうかを検出する事ができます。
例えば、「ずっと」と「ロゴが上になった動き」を使うと、ロゴが上になっている間は矢印表示を実行します。
まとめ
本記事のおさらいです。
- 加速度センサーの値は「加速度」ブロックに数値で保存される
- 数値の範囲は-1023~1023
- 計測範囲を2倍、4倍、8倍に変更できる
- 加速度を使った色々な動作を検出できる
- 色々な動作を条件分岐に使うと便利
上記のとおりです。
それでは、micro:bitを楽しんでください(^_^)/~