forked from: Japanino 基本的ないろいろTest

by undo forked from Japanino 基本的ないろいろTest (diff: 11)
Japaninoでいろいろ基本的な初期設定とかイベントとかメソッドとか。
♥0 | Line 67 | Modified 2010-05-24 22:06:01 | MIT License
play

ActionScript3 source code

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

// forked from undo's Japanino 基本的ないろいろTest
//Japaninoでいろいろ基本的な初期設定とかイベントとかメソッドとか。

package
{
	import flash.display.Sprite;
	
	import funnel.*;
	import funnel.gui.ArduinoGUI;
	import funnel.ui.LED;

	[SWF(frameRate="60", width='465', height='465', backgroundColor='0x0')]

	public class JapaninoTest extends Sprite
	{
		private var _japanino:Arduino;
		private var _japaninoGUI:ArduinoGUI;

		//13番PINをとりあえずLEDに突っ込む用
		private var _led13:LED;

		//6番PINがPOVハンドルを回したときのスイッチになる
		private var pin6:Pin;

		public function JapaninoTest()
		{
			//configを用意
			var config:Configuration = Arduino.FIRMATA;
			//7〜13番PINをデジタル出力に設定
			for (var i:int = 7; i <= 13; i++)
			{
				config.setDigitalPinMode(i, Pin.DOUT);
			}
			//6番PINはPOVハンドル回したときのスイッチなのでDIN
			config.setDigitalPinMode(6, Pin.DIN);
			
			//Japanino生成
			_japanino = new Arduino(config);
			_japanino.addEventListener(FunnelEvent.READY, onFunnelReady);
			
			//FiremataStringイベントを登録
			_japanino.addEventListener(FunnelEvent.FIRMATA_STRING, onJapaninoFirmataString);
			
			//とりあえず13番PINをLEDに突っ込む
			_led13 = new LED(_japanino.digitalPin(13));
			//点滅させる関数 第一引数:点灯→消灯→点灯までの間隔 第二引数:くりかえし回数 0なら無限
			//↓これなら1秒で点灯
			_led13.blink(1000,0);
			
			//6番PINのエッジ立ち上がりイベントを登録
			//Japaninoの場合、POVハンドルを回せばイベントが発生するはず
			pin6 = _japanino.digitalPin(6);
			pin6.addEventListener(PinEvent.RISING_EDGE, onRisingEdge);

			//GUIシミュレータを作成する場合は呼ぶ
			//Japanino持ってないユーザの場合や、とりあえずシミュレートしたい場合など。
			noDeviceHelper();
		}
		
		private function noDeviceHelper():void
		{
			//GUIを生成してシミュレートする
			_japaninoGUI = new ArduinoGUI();
			_japanino.gui = _japaninoGUI;
			addChild(_japaninoGUI);
		}

		private function onFunnelReady(evt:FunnelEvent):void
		{
			//japaninoとの接続が完了し、準備ができました。
			_japanino.removeEventListener(FunnelEvent.READY, onFunnelReady);
		}
		
		private function onJapaninoFirmataString(evt:FunnelEvent):void
		{
			//japaninoから何か信号が来たとき
			trace(evt.message);
			//japaninoに書き込まれているsketchが「JapaninoPOVFirmata」の場合、POVハンドルを回したときのevt.messageに'!'が返ってきます。
			
			if(evt.message == '!')
			{
				trace('POVハンドルのスイッチを検出');
			}
		}

		private function onRisingEdge(evt:PinEvent):void
		{
			//デジタルPINの立ち上がりエッジを検出
			trace(Pin(evt.target).number + '番PINの立ち上がりエッジを検出');
		}








		//
		// 以下は特に今回使ってない
		//
		private function writeDigital(PIN_Number:uint, value:uint):void
		{
			//デジタルピンに値を書き込む
			if(value > 1) value = 1;
			Pin(_japanino.digitalPin(PIN_Number)).value = value;
		}

		private function writeAnalog(PIN_Number:uint, value:Number):void
		{
			//アナログピンに値を書き込む
			Pin(_japanino.analogPin(PIN_Number)).value = value;
		}

		private function inverseDigital(PIN_Number:uint):void
		{
			//デジタルピンの値をinvさせる
			Pin(_japanino.digitalPin(PIN_Number)).value = (Pin(_japanino.digitalPin(PIN_Number)).value == 1) ? 0 : 1;
		}
	}
}

Forked