Prototyping Lab: Recipe 15.3

by kotobuki
♥0 | Line 43 | Modified 2010-04-17 14:52:09 | 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/fqEg
 */

package {
  import flash.display.Sprite;
  import flash.events.Event;
  import flash.text.TextField;

  import funnel.*;
  import funnel.ui.*;

  public class ControlTheRGBLED extends Sprite {
    // RGBLEDのドライブモード
    private static const DRIVE_MODE:int 
      = RGBLED.KATHODE_COMMON;

    // Arduino
    private var arduino:Arduino;

    // RGBLED
    private var rgbLED:RGBLED;

    // R、G、Bをコントロールする可変抵抗器に接続したアナログピン
    private var rPotPin:Pin;
    private var gPotPin:Pin;
    private var bPotPin:Pin;

    // R、G、Bの値を表示するテキストフィールド
    private var textField:TextField;

    public function ControlTheRGBLED() {
      // R、G、Bの各LEDに接続したピンのモードを出力にセット
      var config:Configuration = Arduino.FIRMATA;
      config.setDigitalPinMode(9, PWM);
      config.setDigitalPinMode(10, PWM);
      config.setDigitalPinMode(11, PWM);
      arduino = new Arduino(config);

      // R、G、Bをコントロールする可変抵抗器に接続したピンを初期化
      rPotPin = arduino.analogPin(0);
      gPotPin = arduino.analogPin(1);
      bPotPin = arduino.analogPin(2);

      // RGBLEDのインスタンスを生成
      var rLEDPin:Pin = arduino.digitalPin(9);
      var gLEDPin:Pin = arduino.digitalPin(10);
      var bLEDPin:Pin = arduino.digitalPin(11);
      rgbLED = new RGBLED(rLEDPin, gLEDPin, bLEDPin, 
                          DRIVE_MODE);

      // R、G、Bの各可変抵抗器の値を表示するテキストフィールドを追加
      textField = new TextField();
      textField.width = 150;
      addChild(textField);

      // 毎フレームごとに発生するイベントに対してイベントリスナをセット
      addEventListener(Event.ENTER_FRAME, onEnterFrame);
    }

    // 毎フレームごとに以下を実行
    private function onEnterFrame(e:Event):void {
      // 可変抵抗器の値でRGBLEDの色を更新
      rgbLED.setColor(rPotPin.value, gPotPin.value, 
                      bPotPin.value);

      // 可変抵抗器の値をテキストフィールドに表示
      textField.text = "R:" + rPotPin.value.toFixed(2);
      textField.appendText(", G:" + gPotPin.value.toFixed(2));
      textField.appendText(", B:" + bPotPin.value.toFixed(2));
    }
  }
}