小学生から始める micro:bit プログラミング :加速度センサで遊んで見る

Pocket

皆様、こんにちは。micro:bit プログラミングの第3回目の記事です。前回はセンサを使ってみるということで、温度センサや照度センサなどを使いました。今回は、加速度センサを使ってプログラムを書いてみようと思います。

加速度センサ

加速度を測るセンサが加速度センサです。以前の記事で加速度センサについて扱っているので、それも参照していただきたいのですが、加速度は速度がどれだけの割合で変化しているかを示した数値です。以前の記事でも取り上げましたが、色々な機械に加速度センサは使われています。スマートフォンやタブレット、ゲーム機などでも使われています。画面の向きを取るときに、重力加速度(地球が下に引っ張る力)を見ることで、どちらが地面側を向いているかを知ることができます。また、Wiiリモコンのようにジェスチャでコントロールする場合などにも、加速度センサが使われています。micro:bitの加速度センサについて見ていきましょう。加速度センサに関連する命令ブロックは4種類あります。それぞれについて見ていくことにします。

マイクロビットの加速度センサ用の命令

ジェスチャイベントを取る

「ゆさぶられたとき」と書かれているブロックは、ジェスチャイベントを取ることができるブロックです。ボードを揺さぶったときに処理する、ロゴが上になったときに処理するといったジェスチャによって動きを作ることができます。用意されているのは図に示すように、揺さぶられた、ロゴが上にある、ロゴが下にある、画面(LED)が上にある(表を向いている)、画面(LED)が下にある(裏を向いている)、左に傾く、右に傾く、落とした(落下させた)、3G重力がかかった、6G重力がかかった、8G重力がかかったといった内容を取ることができます。

ジェスチャブロック

試しにジェスチャをしたときに、それぞれ別の音がなるようにプログラムをしてみましょう。図では揺さぶられたお気にパワーアップ、左にしたときにジャンプアップ、右にしたときにジャンプダウン、ロゴが上になったときにちゃんちゃん、ロゴが下になったときに違う音をならすようにしてみました。みなさんもいろいろ試してみてください。

ジェスチャでお試し

傾斜を取る

傾斜はmicro:bitをどちらの方向に傾けているかを取ることができます。ピッチは上と下、ロールは左と右の傾きを調べることができます。例えば、先ほどジェスチャのところで書いた上と下に向けると音がなるというプログラムを傾斜を使って書いてみると次のようになります。傾斜の値が10°となっているので、少し動かしただけでも音がなりますが、数値を大きくすると傾きを大きくしないと音が鳴らなくなります。試してみてください。

加速度、傾斜

傾斜のプログラム

加速度を取る

加速度を取るのは、加速度(ミリG)と書かれているブロックです。高校の物理でも習いますが、Gは重力加速度の単位になります。地球の重力一つ分が1Gです。ミリは1000分の1という意味で、例えば1ミリメートルであれば1000分の1メートルとなります。ですから、1ミリGは地球の重力の1000分の1の力がかかっているということになります。micro:bitについているセンサは、x, y, z の3方向の力を取ることができます。そのため、力がどちらの向きにどれだけの大きさでかかっているかをしることができます。手をふってうごかすといった動作をするときに掛かる力も測ることができますし、地球の重力を測ることもできます。例えば、スマートフォンなどで画面の向きに応じて縦か横かを切り替える機能も加速度センサを使っています。ここでは、傾けている方向によってLEDの光をうごかすプログラムを書いてみましょう。

まず、変数を用意します。変数は4つあり、x, y, accX, accYです。x, y は表示する場所の座標を意味します。accX, accYは加速度のx, y の成分でのデータを意味します。これらの変数を使ってプログラムを書きます。最初だけする処理で、変数x, y の数値を指定します。この最初だけする処理のことを初期化といいます。初期化は最初の状態に戻すことです。ここではLEDを光らせる場所を(x, y)=(2,2)のところに戻します。次に、繰り返し処理をするプログラムを書きます。LEDをx, y のところで点灯させます。その次に加速度X、Yの値をそれぞれ accX, accYに保存します。次に現在位置と加速度センサの数値を使い、移動する方向を決めます。x方向とy方向をそれぞれ横、縦として、右に傾いているときはxを増やし、左に傾いているときはxを減らします。また、上に傾いているときはyを増やし、下に傾いているときはyを減らします。x, yを変更するときに0以上4以下の値にする必要があります。そこで、センサの数値と座標の値を見ながら書きます。accXが-150よりも小さく、x が0よりも大きい場合は左にうごかすために xを1減らす。accXが150よりも大きく、xが4よりも小さい場合には右にうごかすためにxを1増やす。accYが-150よりも小さく、yが0よりも大きい場合は下にうごかすためにyを1減らす。accYが150よりも大きく、yが4よりも小さい場合には上にうごかすためにyを1増やすとします。このようにすることで、傾きでLEDの光を移動させることができます。ここまでやってみましょう。

傾けると光が動くプログラム

ここで、LEDを光らせるときに x, y の数値を指定するときには、下の図のような配置になっていることに注意しましょう。右に行くとxが増えて、下に行くとyが増えます。スクラッチのように真ん中が0となっていないので注意が必要です。

LEDの場所を指定するときの注意点

次にランダムに光をだして、先ほど作った光の部分と同じ場所が光ったら音を出すプログラムを書いてみましょう。光を出す部分をまずは作ります。先ほどと同じように変数を用意します。pointX, pointYとします。その変数の値を0から4までの間の乱数として選びます。そして、その場所を点灯します。2秒待った後で、消灯させてまた乱数をつかって違う場所を点灯します。それとは別の処理として、同じ場所に入ったら音を出すというプログラムを書きます。同じ場所にあるということは、xとpointX、yとpointYとが同じ値になるときなので、条件式を作り、同じ値になったときに音を出すというプログラムを書きます。これで試してみるとちょっとしたゲームのような感じになります。

ランダムに光を出す

まとめ

いかがでしたでしょうか。加速度センサはいろいろなアクションを入れやすいかと思います。いろいろ試してみて面白い使い方を考えてみていただくと良いのではないかと思います。次回もお楽しみに。

 

Pocket

この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

この投稿へのトラックバック

  1. […] 皆様、こんにちは。前回の記事では、加速度センサで遊んで見るということで、加速度センサを使ったプログラムをいくつか作ってみました。今回は、もう少しアクションを作るイメー […]

トラックバック URL