[SPACEBLOCK-12]傾けて動かしてコントロール!!〜三軸ジャイロ三軸加速度センサ

狩野 さやか

SPACEBLOCK傾けて動かしてコントロール!!〜三軸ジャイロ三軸加速度センサ

所要時間目安:55分[接続:10分/工作:5分/プログラミング:40分]

おもちゃの魔法の杖を振るとピカッと光ったり、ゲームのリモコンを傾けるとキャラクターが同じ方向に曲がったり……わたしたちのまわりには動きに合わせて反応するものがいろいろあります。今回は「三軸ジャイロ三軸加速度センサモジュール」を使って傾けると光が移動するLEDパネルを作ります!

必要なもの&準備

SPACEBLOCK
左上:SPACEBLOCK通常パッケージ、右上:三軸ジャイロ三軸加速度センサ、左下:8×8 RGB LEDマトリックスパネル、右下:ジャンパーワイヤ

プログラミング画面の開き方など基本の作業の流れは、「SPACEBLOCKのプログラミング手順をチェック!」で確認してくださいね。

SPACEBLOCKに拡張パーツを接続する

まずは、今回使用する三軸ジャイロセンサとLEDパネルをSPACEBLOCKに接続してみましょう。

接続の全体像

細かい部分は次の図を参考にしてください。三軸ジャイロセンサはSPACEBLOCK本体の特別なピンヘッダに直接差すことができます。

三軸ジャイロセンサは8個の専用ピンヘッダに差してSPACEBLOCKと一体化させる
LEDパネルも三軸ジャイロセンサも専用の接続場所がある

三軸ジャイロセンサって何ができるの?

三軸ジャイロセンサは、傾きの角度と加速度を測定することができます。今回は傾きの角度について紹介します。加速度は次の記事で詳しく紹介していますので確認してくださいね。

3つの角度

SPACEBLOCKのプログラムでは、地面に対して水平の状態を基準に、X軸、Y軸、Z軸に対してどのくらい傾いているかを測定します。

X角度、Y角度、Z角度の値

角度の値

USBケーブルのコネクタが左側になるように水平に配置した場合、X角度とY角度は0です。右に傾けるとX角度がプラスに、左に傾けるとX角度がマイナスになります。奥に傾けるとY角度がプラスに、手前に傾けるとY角度がマイナスになります。

Z角度は表向きに水平のとき180で、垂直にすると0、裏返しにすると-180になります。

三軸ジャイロセンサの値をチェックしてみよう

プログラムで傾きの角度の値を使うときは、「入力」カテゴリーの[ジャイロ(PB1.PB3)の角度《X》を読取]ブロックを使います。[繰り返す]と[数字《0》を表示]と組み合わせてプログラムすると、三軸ジャイロセンサの値をコンソールで確認できます。

プログラムにはジャイロ専用のブロックを使う

X角度、Y角度、Z角度の値を同時に確認するために、次の図の通りにプログラムして実行してみましょう。三軸ジャイロセンサをつけたSPACEBLOCKを傾けると刻々と値が変わっていくのがわかります。

このプログラムを実行するとコンソールにX角度、Y角度、Z角度の値が表示され続ける

X角度の値でLEDパネルの光り方を変える!

それでは、三軸ジャイロセンサの値に応じてLEDパネルの表示を変えるプログラムを作りましょう。

まずX角度だけを使います。次の図の通り、X角度が45度より大きくなったときと、X角度が-45度より小さくなったときでLEDの表示を切り替えるプログラムを作ります。

X角度によって、LEDパネルの表示が変わるプログラムを作る

変数を作る

X角度の値をプログラムの中で使いやすくするために「変数(へんすう)」を作成します。「変数」は、値を入れておくことができる入れ物で、自分で好きな名前をつけられます。次の図を参考に、「数字」型の「angleX」という名前の変数を作ってください。

変数「angleX」を作成する

[繰り返す]ブロックの間に、[数字《変数名》に《 》をセット]ブロックを入れ、変数「angleX」にX角度の値をセットします。

条件で処理を分ける

続けて、LEDの表示を切り替えるプログラムを作成します。[もし《 》なら…でなければ…]ブロックと[《0》《=》《0》]ブロックで、X角度の値によってLEDパネルの表示方法を3通りにわける仕組みを作ります。

X角度の値によって、3つに処理を分岐させる

LEDパネルの表示を指定する

[もし《 》なら…でなければ…]ブロックの間にLEDパネルの指定ブロックをいれると次の図の通りプログラムが完成します。

X角度によってLEDパネルの表示が変わるプログラム

完成!

このプログラムを実行すると、このように傾きにあわせてLEDの表示が切り替わります。

プログラムを実行したところ

LEDパネルとSPACEBLOCKを重ねて持つと、傾けた側が光っているように見えますよ。動画でご覧ください!

傾き方でLEDパネルの光り方を変える!

次は、X角度だけでなく、Y角度とZ角度も使って、傾け方に応じて次々にLEDパネルの光り方が変わる演出に挑戦しましょう。

次の図の通り、8種類の傾き方と裏返しの状態とそれ以外の合計10通りに分けて、LEDパネルの光り方を変えます。傾いている側のライトがつくようにLEDパネルのデザインを工夫します。

8種類の傾き方をX角度、Y角度の値で示している。浅い傾きで反応させたいので、20度と-20度を基準にしている

変数を作る

変数を3つ作り「angleX」「angleY」「angleZ」という名前にします。次の図の通り、[繰り返す]ブロックの間に、[数字《変数名》に《 》をセット]ブロックを3個入れ、変数に角度の値をセットします。

「angleX」にX角度、「angleY」にY角度、「angleZ」にZ角度をセットする

条件で処理を分ける

続けて、LEDの表示を切り替えるプログラムを作成します。次の図の通り、[もし《 》なら…でなければ…]ブロックと[《0》《=》《0》]ブロックで、10通りに条件分岐する仕組みを作ります。条件に[《 》かつ《 》]ブロックを入れると、X角度とY角度の両方を同時に判定させることができます。

10通りに条件分岐させるプログラム
「かつ」を使った条件の作り方
「論理」カテゴリーの[《 》かつ《 》]ブロックを選んで、[もし《 》なら…でなければ…]ブロックの条件に入れます。[《 》かつ《 》]ブロックの左右にそれぞれ判定させる式を入れましょう。

「かつ」の左右の式両方が「はい」の状態のとき、この条件全体が「はい」の状態だと判定されます。

なお、[《 》または《 》]ブロックを使うと、「または」の左右の式のどちらかが「はい」の状態のとき、この条件全体が「はい」の状態だと判定されます。

LEDパネルの表示を指定する

[もし《 》なら…でなければ…]ブロックの間にLEDパネルの指定ブロックをいれるとプログラムの完成です。縦にとても長いプログラムなので、動画でご覧ください。

完成!

このプログラムを実行してみましょう。LEDパネルとSPACEBLOCKを重ねて持つと本当に光が傾きに応じて動いているように見えます!

さらに、もうちょっと不思議な感じを演出するために、白いプラスチックボックスに次の写真のようにして納めます。

三軸ジャイロセンサをつけたSPACEBLOCKの向きとLEDパネルの向きに注意

こうすると、箱を動かすだけでフタが自動的に光っているように見えます。

傾けると光が重力で移動しているように感じられる

動画でご覧ください!

LEDパネルと三軸ジャイロセンサを位置を合わせて箱に納めることで、光が重力に引っ張られているような不思議な様子が演出できました。

このように、自分の動きに合わせて何かが動いているような演出をするのに三軸ジャイロセンサはぴったりです。今回は傾きだけ使いましたが、加速度を使っても面白いことができそうですね。みなさんもいろいろなアイデアを考えてみてください!!

SPACEBLOCKの使い方や作品アイデアがたくさん! SPACEBLOCKでプログラミングものづくり!
SPACEBLOCK(スペースブロック)は経済産業省実施のEdTech導入補助金に採択されたEdTechツールです。

狩野 さやか
Studio947のデザイナー・ライター。デザイン・ウェブ制作全般を担当する一方、技術書籍の執筆や、教育のICT活用・子ども向けプログラミングについての取材・執筆をしている。著書に『ひらめき!プログラミングワールド』『見た目にこだわるJimdo入門』『ふたりは同時に親になる 産後の「ずれ」の処方箋』。

コメント

コメントを書く