Prototyping Lab: Recipe 17.3

by kotobuki
♥0 | Line 27 | Modified 2010-04-17 13:00:30 | MIT License
play

ActionScript3 source code

/**
 * Copyright kotobuki ( http://wonderfl.net/user/kotobuki )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/nMKq
 */

package {
  import flash.display.Sprite;
  import flash.events.TimerEvent;
  import flash.utils.Timer;

  import funnel.*;

  public class ControlVibrationMotor extends Sprite {
    private var arduino:Arduino;

    // 一定時間ごとにトリガーするためのタイマー
    private var pulseGenerator:Timer;

    // モータを接続したピン(D13)
    private var motorPin:Pin;

    // モータを駆動するためのオシレータ
    private var osc:Osc;

    public function ControlVibrationMotor() {
      // モータを接続したピンのモードを出力にセット
      var config:Configuration = Arduino.FIRMATA;
      config.setDigitalPinMode(13, OUT);
      arduino = new Arduino(config);

      // 1Hzの矩形波(500msごとにオンとオフを繰返す)を生成するオシレータをセット
      osc = new Osc(Osc.SQUARE, 1, 1, 0, 0, 1);
      motorPin = arduino.digitalPin(13);
      motorPin.addFilter(osc);

      // 2000msごとにパルスを生成するタイマを生成してイベントリスナをセットした後スタート
      pulseGenerator = new Timer(2000);
      pulseGenerator.addEventListener(TimerEvent.TIMER, 
                                      onPulse);
      pulseGenerator.start();
    }

    // タイマイベントが発生する度に以下を実行
    private function onPulse(e:TimerEvent):void {
      // オシレータをスタートしてモータを500msの間だけオンにする
      // 回数が1回にセットされているために1度動いた後は自動的に停止する
      osc.start();
    }
  }
}