引き続きArduino

ロボットをコントロールしようとしている。気を付けるべきことはUARTがしばしば失敗する。シリアルポートのFIFOバッファをDISABLEにする必要がありそう。それとプログラムによってはアップロードが巧く動かなさそう+3つめにArduino用の赤外線といって売られているものとボードの配線が同一でなかったことがわかった。これはかなり腰をいれてやらないと行けなさそうだ


Arduinoをswfからコントロール

ArduinoをFlash(swf)からコントロールしてみた。

”Flashから使う”がすごく参考になった

1.FlashDevelopで作成する。
2.上記サイトにあるように、シリアルポートのみ注意してテンプレートを調整する。
3.画像を読み込みたい際には、SWFが吐き出される場所と同じところに画像を配置する
 (下記サンプルでは、test.jpg)
4.SWFのサイズや高さも調節できる(SWF[…を参照)

作ったのはこの程度のサンプル。これをFlashDevelopでテストしてビルドすると良い。

package {
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.TimerEvent;
import flash.net.URLRequest;
import flash.utils.Timer;
import net.eriksjodin.arduino.Arduino;

[SWF(width="500", height="500", backgroundColor="0xFFCC00")]

public class Main extends Sprite {
private var arduino:Arduino;
private var pin:int;
private var timerEvent:Timer;

public function Main() {
timerEvent = new Timer(100);
timerEvent.addEventListener(TimerEvent.TIMER, onTick);
timerEvent.start();
//Insert Picture
var img1:Loader = new Loader();
var theUrl:URLRequest = new URLRequest("test.jpg");
img1.load(theUrl);
img1.x = 0;
img1.y = 0;
addChild(img1);

pin = 13;
arduino = new Arduino("127.0.0.1", 5334);
arduino.setPinMode(pin, Arduino.OUTPUT);
arduino.writeDigitalPin(pin, Arduino.LOW);
}

public function onTick(event:TimerEvent):void {
if ((timerEvent.currentCount % 3) != 0) {
arduino.writeDigitalPin(pin, Arduino.HIGH);
} else {
arduino.writeDigitalPin(pin, Arduino.LOW);
}
if (timerEvent.currentCount > 30 ) {
arduino.writeDigitalPin(pin, Arduino.LOW);
timerEvent.stop();
}
}
}
}

動かし方。

1.PCでArduinoを起動。StandardFirmataを選んで読み込む(自分の場合はUNOだったのでUNOを読み込んだ)。
2.PCでSerproxy.exeを起動
3.上記のSWFをたたいて起動。