[No.18]クマをパンチでKO!運動不足解消装置

Inquiry-Based Study

食欲の秋、読書の秋、スポーツの秋……ですが、食べたり読んたりを楽しんでスポーツは後回しという方も多いのでは? 日々のちょっとしたエクササイズを三日坊主にならずに続けられるように、モチベーションの上がる装置「クマをパンチでKO!」を作ってみましょう!! 

Elementary School ~ Advanced 80分
今回作る「クマをパンチでKO!」はこんな感じ。パンチの相手はみなさんがモチベーションの上がるものにアレンジしてくださいね!

必要なもの&準備

上段左から:SPACEBLOCK通常パッケージ、LEDパネル、下段左から: 障害物回避センサ、180°マイクロサーボモーター

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

まずは、今回使用する障害物回避センサ、サーボモーター、LEDパネルをSPACEBLOCKに接続してみましょう。
接続の全体像

接続の細かい部分は次の図で確認してください。

ピンソケットの位置に注意して接続する

今回作る装置は、入力装置に障害物回避センサーを使い、パンチの手が近づいたことを検知します。出力装置はサーボモーターとLEDパネルを使い、サーボモーターでクマを動かし、LEDパネルには状態を表示します。

クマなどの工作部分を作ろう

まず装置に必要なパーツを用意しましょう。今回の装置の主役はパンチで倒すクマです。クマの形と手前を隠す草の形を段ボールで作り、サーボモーターにつける長い軸を用意します。
色紙で装飾します。どのくらい怖い感じにするかはみなさん次第!
台になるケースにサーボモーターを固定します。あとで障害物回避センサーを内側から外に向けて設置できるように穴を開けてあります。
サーボモーターを0°から90°にすると棒がうしろ側に倒れるように設置

長い軸にクマ、草のパーツをケース手前に貼り付けるとすっかりそれらしい雰囲気に!

この段階で、プログラムを作成して微調整をしてから次の工程に移ると作業がしやすいのですが、ここでは続けて最後まで装置を完成させてしまいます。

草の装飾パーツを一旦はずして、SPACEBLOCKなどをすべてケースの中に入れます。写真を参考に障害物回避センサーとLEDパネルを内側に固定し、サーボモーターのジャンパーワイヤは穴を通して内側に入れます。

ふたを閉じるとこんな感じに。サーボ部分が見えないように、草のパーツで隠せば完成です。
さて、ここからいよいよプログラムに取りかかりましょう!

障害物回避センサの使い方と値の取り方

プログラムでは障害物回避センサの値を使います。障害物回避センサは以前「[10]自動で開くゴミ箱を発明!」で詳しく使い方を紹介しましたが、プログラムに使うブロックが違うので簡単に復習しましょう。

障害物回避センサは、赤外線によって一定の距離内に障害物があるかどうかを検知することができます。障害物が「ある」か「ない」かの2つの情報だけを渡すデジタル入力です。

障害物回避センサは、何も障害物がない状態ならば挿したピンヘッダの電圧を高くしてtrue(トゥルー)という値を、何か障害物があると電圧を下げfalse(フォルス)という値をプログラムに渡します。true(トゥルー)とfalse(フォルス)はブール値といって、条件式などで使います。プログラムでは、[《A0》の電圧デジタル読取]ブロックで値を取ります。

障害物回避センサはTrueとFalseのブール値

障害物の検出距離は、障害物回避センサについているポテンショメータをドライバなどで回して調節します。今回はパンチの動作に反応させたいので、あまり距離を短くしすぎると、うっかり装置を直接パンチしてしまうかもしれません。ある程度の距離で反応するように設定しておきましょう。

距離の調整をするときは軽い力で動く範囲で回す。センサをSPACEBLOCKにつないで電源が入っていれば、ライトの点灯状況で障害物を検出しているかどうか確認できる

パンチがきたらクマが倒れるプログラム

障害物回避センサの値を利用して、次の図の通り、パンチでクマが倒れるプログラムを作ってみましょう。障害物回避センサの値を繰り返しチェックし続け、パンチの手を検知したら、サーボモーターの角度を0°から90°に動かしてまた0°に戻します。LEDは通常は青で、パンチを検知したら赤にします。
パンチを検知したらクマが倒れて起き上がるプログラム

[もし《 》なら…でなければ…]ブロックの条件部分には、障害物回避センサの値を指定しています。障害物回避センサの値はtrueかfalseのブール値です。ブール値はtrueならば条件にあっていると判定され、falseならば条件にあっていないと判定されます

さて、これでパンチでクマが倒れる仕組みはできました。エクササイズのモチベーションを上げるために、さらに、パンチの回数を数える仕組みを追加してみましょう。

回数をカウントする

回数を数えるために、新しく変数「count」を作ります。
変数「count」の値が、1回パンチするごとに1増えるようにプログラムを追加します。回数は、コンソールに表示します。
回数を数えるプログラムを追加

変数から今入っている値を取り出して1足した値をまた変数に入れると、繰り返すたびに変数を1ずつ値を増やすことができます。回数を数えたり点数を数えたりする仕組みをプログラムするときに便利なので、覚えておきましょう。

回数は数えられるようになりましたが、コンソールに表示しても、「クマをパンチでKO!」装置として使うときには回数を見ることができません。もうひと工夫しましょう。

10回パンチしたらカラフル演出でインターバル

エクササイズは細かく励ましてもらうのが重要です。10回ごとにわかりやすい演出を加えましょう。回数が10回に達したら、LEDパネルに「10」と表示し、さらにカラフルなアニメーションを表示します。回数は0回にリセットし、また1からカウントし始められるようにします。次の図の右側部分が追加したプログラムです。
回数が10回になったときだけ実行するプログラムを追加

これで「クマをパンチでKO!」の完成です!

SPACEBLOCKにプログラムを転送したら、さっそくパンチしてみましょう! 10回ごとにインターバルをおきながらエンドレスにエクササイズが楽しめます。センサーに何かが近づけばいいので、パンチだけでなくハイキックにしてもOK。置く場所を低くすれば、もも上げ運動にも使えますよ!

パンチをしたら障害物回避センサが手を検知してクマが倒れる!

10回に達したらLEDの演出の間ひとやすみ。回数は0にリセットされるので、また次の10回を続けてやりましょう!

動画でご覧ください。2セット分パンチしています。白熱して装置を直接パンチしないように!!
クマが倒れてくれるだけで、本当にパンチしている気分になるので、エクササイズがとっても楽しい! パンチやキックの動作なら、ちょっとしたストレス解消にもなります。10回ごとのインターバルもちょうどいい感じですからぜひ試してみてくださいね!