食欲の秋、読書の秋、スポーツの秋……ですが、食べたり読んたりを楽しんでスポーツは後回しという方も多いのでは? 日々のちょっとしたエクササイズを三日坊主にならずに続けられるように、モチベーションの上がる装置「クマをパンチでKO!」を作ってみましょう!!
必要なもの&準備
- SPACEBLOCK通常パッケージ[SPACEBLOCK本体、USBケーブル、電池ボックス]
- 赤外線障害物回避センサモジュール(障害物回避センサ)
- 180°マイクロサーボモーター(サーボモーター)
- 8×8 RGB LEDマトリックスパネル(LEDパネル)
- ジャンパーワイヤ[ピンヘッダ-ピンソケット3本×延長したい数]
- プログラミングをするパソコン
プログラミング画面の開き方など基本の作業の流れは、「SPACEBLOCKのプログラミング手順をチェック!」で確認してくださいね。
SPACEBLOCKに拡張パーツを接続する
まずは、今回使用する障害物回避センサ、サーボモーター、LEDパネルをSPACEBLOCKに接続してみましょう。
接続の細かい部分は次の図で確認してください。
今回作る装置は、入力装置に障害物回避センサーを使い、パンチの手が近づいたことを検知します。出力装置はサーボモーターとLEDパネルを使い、サーボモーターでクマを動かし、LEDパネルには状態を表示します。
クマなどの工作部分を作ろう
まず装置に必要なパーツを用意しましょう。今回の装置の主役はパンチで倒すクマです。クマの形と手前を隠す草の形を段ボールで作り、サーボモーターにつける長い軸を用意します。
色紙で装飾します。どのくらい怖い感じにするかはみなさん次第!
台になるケースにサーボモーターを固定します。あとで障害物回避センサーを内側から外に向けて設置できるように穴を開けてあります。
長い軸にクマ、草のパーツをケース手前に貼り付けるとすっかりそれらしい雰囲気に!
この段階で、プログラムを作成して微調整をしてから次の工程に移ると作業がしやすいのですが、ここでは続けて最後まで装置を完成させてしまいます。
草の装飾パーツを一旦はずして、SPACEBLOCKなどをすべてケースの中に入れます。写真を参考に障害物回避センサーとLEDパネルを内側に固定し、サーボモーターのジャンパーワイヤは穴を通して内側に入れます。
ふたを閉じるとこんな感じに。サーボ部分が見えないように、草のパーツで隠せば完成です。
さて、ここからいよいよプログラムに取りかかりましょう!
障害物回避センサの使い方と値の取り方
プログラムでは障害物回避センサの値を使います。障害物回避センサは以前「[10]自動で開くゴミ箱を発明!」で詳しく使い方を紹介しましたが、プログラムに使うブロックが違うので簡単に復習しましょう。
障害物回避センサは、赤外線によって一定の距離内に障害物があるかどうかを検知することができます。障害物が「ある」か「ない」かの2つの情報だけを渡すデジタル入力です。
障害物回避センサは、何も障害物がない状態ならば挿したピンヘッダの電圧を高くしてtrue(トゥルー)という値を、何か障害物があると電圧を下げfalse(フォルス)という値をプログラムに渡します。true(トゥルー)とfalse(フォルス)はブール値といって、条件式などで使います。プログラムでは、[《A0》の電圧デジタル読取]ブロックで値を取ります。
障害物の検出距離は、障害物回避センサについているポテンショメータをドライバなどで回して調節します。今回はパンチの動作に反応させたいので、あまり距離を短くしすぎると、うっかり装置を直接パンチしてしまうかもしれません。ある程度の距離で反応するように設定しておきましょう。
パンチがきたらクマが倒れるプログラム
障害物回避センサの値を利用して、次の図の通り、パンチでクマが倒れるプログラムを作ってみましょう。障害物回避センサの値を繰り返しチェックし続け、パンチの手を検知したら、サーボモーターの角度を0°から90°に動かしてまた0°に戻します。LEDは通常は青で、パンチを検知したら赤にします。
[もし《 》なら…でなければ…]ブロックの条件部分には、障害物回避センサの値を指定しています。障害物回避センサの値はtrueかfalseのブール値です。ブール値はtrueならば条件にあっていると判定され、falseならば条件にあっていないと判定されます。
さて、これでパンチでクマが倒れる仕組みはできました。エクササイズのモチベーションを上げるために、さらに、パンチの回数を数える仕組みを追加してみましょう。
回数をカウントする
回数を数えるために、新しく変数「count」を作ります。
変数「count」の値が、1回パンチするごとに1増えるようにプログラムを追加します。回数は、コンソールに表示します。
変数から今入っている値を取り出して1足した値をまた変数に入れると、繰り返すたびに変数を1ずつ値を増やすことができます。回数を数えたり点数を数えたりする仕組みをプログラムするときに便利なので、覚えておきましょう。
回数は数えられるようになりましたが、コンソールに表示しても、「クマをパンチでKO!」装置として使うときには回数を見ることができません。もうひと工夫しましょう。
10回パンチしたらカラフル演出でインターバル
エクササイズは細かく励ましてもらうのが重要です。10回ごとにわかりやすい演出を加えましょう。回数が10回に達したら、LEDパネルに「10」と表示し、さらにカラフルなアニメーションを表示します。回数は0回にリセットし、また1からカウントし始められるようにします。次の図の右側部分が追加したプログラムです。
これで「クマをパンチでKO!」の完成です!
SPACEBLOCKにプログラムを転送したら、さっそくパンチしてみましょう! 10回ごとにインターバルをおきながらエンドレスにエクササイズが楽しめます。センサーに何かが近づけばいいので、パンチだけでなくハイキックにしてもOK。置く場所を低くすれば、もも上げ運動にも使えますよ!
10回に達したらLEDの演出の間ひとやすみ。回数は0にリセットされるので、また次の10回を続けてやりましょう!
動画でご覧ください。2セット分パンチしています。白熱して装置を直接パンチしないように!!
クマが倒れてくれるだけで、本当にパンチしている気分になるので、エクササイズがとっても楽しい! パンチやキックの動作なら、ちょっとしたストレス解消にもなります。10回ごとのインターバルもちょうどいい感じですからぜひ試してみてくださいね!
狩野 さやか
Studio947のデザイナー・ライター。デザイン・ウェブ制作全般を担当する一方、技術書籍の執筆や、教育のICT活用・子ども向けプログラミングについての取材・執筆をしている。著書に『ひらめき!プログラミングワールド』『見た目にこだわるJimdo入門』『ふたりは同時に親になる 産後の「ずれ」の処方箋』。
コメント