因為自己flash比較熟的關係,聽到老師說可以用flash去控制Arduino,就想說可以來試試看,簡單的硬體控制配上漂亮的桌面UI,應該也會有點看頭。
這次使用funnel.cc,先到
官網的Download 下載整包的funnel.zip ,然後解壓縮到電腦上。
要使用先把 libraries\actionscript3\src\ 一個funnel的資料夾,放到要寫的程式的同一個資料夾,或是在flash設定參考的class路徑。
因為flash安全性的問題,沒辦法跟硬體直接溝通,所以要放執行壓縮檔內的Funnel Server讓兩者可以溝通。

執行後要設定用哪塊板子跟port。
然後要把StandardFirmata燒到Arduino裡。
環境弄好了,接下來就開始寫code了,先寫一個可以控制led開關的flash,把 pin 接在 11 角位。
寫一隻as檔控制硬體。
- package
- {
- import flash.display.MovieClip;
-
- import funnel.*;
- import funnel.gui.*;
- import funnel.ui.*;
-
- public class example1 extends MovieClip
- {
- private var arduino:Arduino;
-
-
-
- public function example1()
- {
- var config:Configuration = Arduino.FIRMATA;
-
- config.setDigitalPinMode(11, PWM);
-
- arduino = new Arduino(config);
- arduino.addEventListener(FunnelEvent.READY, onReady);
-
-
- var gui:ArduinoGUI = new ArduinoGUI();
- addChild(gui);
- arduino.gui = gui;
- }
-
- public function onReady(e:FunnelEvent):void
- {
-
- }
- }
- }
其中的gui是用來監控訊號有沒有正常輸入,在測試的時候很方便,正式的話再看情況要不要留著。
在flash的舞台加上一個按鈕,然後寫控制的led亮暗的code。
- import flash.events.MouseEvent;
-
- btn_LED.addEventListener(MouseEvent.CLICK, btn_LED_Click);
-
- var isLight:Boolean = false;
-
- function btn_LED_Click(event:MouseEvent):void
- {
- isLight = !isLight;
-
- if (isLight)
- {
- arduino.digitalPin(11).value = 1;
- }
- else
- {
- arduino.digitalPin(11).value = 0;
- }
- }
都寫好了就測試看看
如果都正確的話,按按鈕可以開關led燈,旁邊的面板則是剛提到的gui,可以觀察訊號是否正確改變。
留言