Prototyping Lab: Recipe 15.3
♥0 |
Line 43 |
Modified 2010-04-17 14:52:09 |
MIT License
archived:2017-03-20 11:35:26
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));
}
}
}