micro:bitに搭載されている機能の1つに、加速度センサーがあります。今回はこの加速度センサーで何ができるのか、加速度とは何なのか、どうやってプログラムするかについて紹介します。
なにができる?
一般的に 、加速度センサは、 「振動・動き」「重力」「衝撃」の3つの現象を測定することができます。 micro:bitのプログラミングブロックをみてみると、「ゆさぶられた」、「ロゴが上/下になった」、「画面が上/下になった」、「左/右に傾けた」、「落とした」、「3/6/8G」といったアクションを検出できます。また、アクションだけではなく、X軸・Y軸・Z軸方向の加速度を値として取得することもできます。
加速度とは?
加速度とは何でしょうか?加速度は、単位時間あたりの速度の変化率を表します。時速100kmで走っていても、その速度が一定(ずっと時速100km)のときは、加速度は0です。速度がどんどん早くなるときは、加速度はプラスの値です。反対に、速度がどんどん遅くなるときは、加速度はマイナスの値となります。
加速度は向きを持っています。加速度センサは、X方向・Y方向・Z方向をそれぞれ個別に計測することができます。「絶対値」というのは、x^2+y^2+z^2の平方根をとったもので、これは方向を持っていませんが、そのものに働く加速度の大きさを示します。加速度の向きに関係なく、micro:bitをどれだけ早く動かしたかを知りたいときには、この絶対値を使います。
3G・6G・8Gとは何でしょうか?これは、地球の重力加速度をもとにした加速度の数値です。物を落下させると、地球に引っ張られて、どんどん速度を上げて落ちていきます。この重力加速度の値を1Gという単位で扱います。例えば、microbitを手首につけて、パンチの動作をしたときに、そのときの加速度が重力加速度の3倍、すなわち3Gを検知した場合に、プログラムを動作させたい場合は、「3G」のブロックを使用します。
どんな物が作れる?
今回は学習用サンプルとして、4つのアクション「ゆさぶられた時」「ロゴが上/下/左/右に傾けた時」 を使用しました。 microbitが揺さぶられたときは、スマイルマークを表示します。microbitが傾けられたときは、傾けた方向に矢印を表示します。
プログラミング
プログラムは下記のとおりです。ブロックを使うと、とても簡単に実現できます。紫色の「~の時」というブロックは、「ツールボックス → 入力」にあります。青色のLED表示のブロックは、「ツールボックス → 基本 → アイコンを表示」 と「ツールボックス → 基本 → LED画面を表示」を使用します。 「 LED画面を表示 」は、点灯させたい部分をクリックして、白色にします。
ブロックのプログラミング操作に慣れていない方は、下記の画面キャプチャを参考にしてください。マウス操作ができる子供であれば、動画を見ながら一人でできると思います。
JavaScriptで記述する場合は、下記のコードとなります。これも関数さえ分かれば、それほど難しいコードではないと思います。
input.onGesture(Gesture.Shake, function () {
basic.showIcon(IconNames.Happy)
})
input.onGesture(Gesture.LogoUp, function () {
basic.showLeds(`
. . # . .
. . # . .
# . # . #
. # # # .
. . # . .
`)
})
input.onGesture(Gesture.LogoDown, function () {
basic.showLeds(`
. . # . .
. # # # .
# . # . #
. . # . .
. . # . .
`)
})
input.onGesture(Gesture.TiltLeft, function () {
basic.showLeds(`
. . # . .
. # . . .
# # # # #
. # . . .
. . # . .
`)
})
input.onGesture(Gesture.TiltRight, function () {
basic.showLeds(`
. . # . .
. . . # .
# # # # #
. . . # .
. . # . .
`)
})
まとめ
MakeCodeには、加速度センサを使用したチュートリアルが用意されており、じゃんけんゲーム、サイコロ、楽器などを作ることができます。また、Scratchと組み合わせれば、ゲーム機のコントローラとしても使用できます。
コメントを残す