アクセシビリティ
デベロッパーリソース

目次

~パワードスーツが作りたいあなたへ~2万円でつくるマスタースレイブシステム

「曲げセンサー」を使ってみよう

最初のサンプルでは、上のビデオのような曲げセンサーを使ったものを作成します。
曲げセンサーは、文字通り、曲がり具合を測定するセンサーです。
センサーの曲がり具合をGainerで取得し、Flashの画面に表示してみましょう。

*ここから先のサンプルは、Gainerのセットアップが完了していることが必須条件です。Gainerのセットアップ方法は、Gainer公式サイトにて丁寧に解説されているので、そちらを参考にしてください。

用意するもの:

  • 曲げセンサー × 1
    浅草ギ研で販売されているものを使います。
    これを回路につなぐと、まっすぐな状態では10kΩ程度の抵抗ですが、曲げるとその抵抗が30~40kΩほどに変化します。
    曲げセンサー
  • 10kΩ抵抗 × 1
    各電子部品に過剰な電気が流れ込まないようにする部品です。
    電子パーツ屋さんで、100個入りで100円くらいで売っています。
    10kΩ抵抗 × 1
  • ブレッドボード × 1
    面倒な半田付けなしで、各種電子部品やジャンプワイヤを差し込むだけで電子回路を作成することができる基盤です。
    写真はサンハヤト製のものです。ブレッドボードの仕組みや使い方についてはGainer公式ページのチュートリアルを始め、いろいろなWEBページで解説されていますので調べてみてください。
    ブレッドボード × 1
  • ジャンプワイヤ(適量)
    ブレッドボードと組み合わせ、各電子部品を配線するための線です。
    さまざまな種類があり、ブレッドボードとセットで販売されている場合も多いです。
    ジャンプワイヤ(適量)

回路の組み立て:

曲げセンサーをGainerに繋ぐには、以下のような回路図の電子回路を作成します。
回路図

上記の物をもうすこしわかりやすく描くと、このようになります。
GND、+5Vのように、電子工作をあまりしない人にはよくわからない記号がありますが、GNDはGND同士、+5Vは+5V同士を結んでください。
回路図

では早速、この回路図を元にブレッドボード上で回路を組んでみましょう。
回路図の意味がわからなくても、まずはこの図のとおりに回路を作成してみてください。

まず、GAINERのGNDと曲げセンサーを繋ぎます。曲げセンサーには2本の端子がありますが、+極や-極はありませんのでどちらに繋いでも構いません。
その後、10kΩの抵抗を経由して、GAINERの+5Vに結線します。また、曲げセンサーと10kΩの抵抗を繋いでる箇所からジャンプワイヤを引き出し、GAINERのain(アナログ入力)の0番に結線します。

回路写真
この写真のように各部品が接続できればOKです。

Flashでセンサーの値を取得する:

曲げセンサーの値取得用の「test.fla」を作成します。(今回はGainerのAS3用のライブラリを使用しますので、AS3.0用のflaファイルにしてください。)
test.flaのステージにダイナミックテキスト「ain0_text」を配置します。
このダイナミックテキストに、曲げセンサーからの値を表示してみたいと思います。
TEST

ファイル構成:
┌test.fla
├Test.as
└lib/
 └gainer/

test.flaのドキュメントクラスを「Test.as」として設定します。
また、gainerパッケージを利用するので、クラスパスの設定を忘れないようにしてください。
Testクラスのソースは以下の通りです。

package {

import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;
import gainer.*;//gainerパッケージをインポートしておくこと

public class Test extends Sprite{
private var _gnr:Gainer;//Gainerインスタンス
private var _ain0_text:TextField;//ステージ上のain0の値を表示するダイナミックテキスト

public function Test() {
_ain0_text = this["ain0_text"];
//初期化
_init();
}

//------------------------
// 初期化
//------------------------
private function _init():void {
//Gainer準備
//MODE1で設定
_gnr = new Gainer("localhost", 2000, Gainer.MODE1, false);
//Gainerの準備が完了したら_runを実行
_gnr.onReady = function() {
_run();
}
}

//------------------------
// 開始
//------------------------
private function _run():void {
//アナログ入力の取得を開始
_gnr.beginAnalogInput();
//EnterFrameでGainerからのアナログ入力を監視
addEventListener(Event.ENTER_FRAME, _update);
}

//-----------------------------------
// EnterFrame更新
//-----------------------------------
private function _update(e:Event):void {
//Gainerのain0の値をダイナミックテキストに表示
_ain0_text.text = _gnr.analogInput[0];
}

}

}

スクリプトが記述できたらGainerのserial proxy サーバーを起動します。
以下のようにserial proxyサーバーとGainerとの接続が確立されたのを確認してから、Flashをパブリッシュして動作確認を行います。

Gainer

いかがでしょう?
曲げセンサーを曲げるとダイナミックテキスト内の数値が変化したと思います。
筆者の場合はまっすぐの場合から約90度に曲げたときに、値が約128-178に変化しました。 この変化はセンサーによって若干個体差があるので、作品作りの際にはそれぞれのデータを調査しておく必要があります。