forked from: Japanino 基本的ないろいろTest
forked from Japanino 基本的ないろいろTest (diff: 11)
Japaninoでいろいろ基本的な初期設定とかイベントとかメソッドとか。
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;
}
}
}