[Unity3D] Arduino for Unity控制Led燈亮滅
今天要來跟大家分享如何使用Unity(輸入)來控制Arduino(輸出),在這邊我們會使用到序列通訊(SerialPort)的指令,您可以把序列通訊的角色看成是翻譯,作用在於充當Arduino與Unity之間溝通的橋樑。當然,這一切都只有簡單的幾行程式就能夠做到了喔!(使用Arduino UNO、Untiy5.0)
準備材料:
- Arduino一塊
- 麵包板一塊
- Led一顆
- 色碼電阻:紅紅棕
- 跳線
Step1:將Led接在13號腳位,再接一個電阻。
Step2:在Arduino IDE編寫如下的程式碼並上傳至Arduino。
在Arduino使用序列通訊會用到的幾個指令
1.Serial.begin():設定鮑率
2.Serial.read():讀取值
3.Serial.print():寫值
程式的架構很簡單,分為二部份:1.讀值;2.Led亮暗。由於我們將Led做為輸出,所以要先設定pingMode(腳位,OUTPUT),接著當Untiy傳過來的值為1時,Led亮digitalWrite(腳位,HIGH);反之值為0時,Led暗digitalWrite(腳位,LOW)。
Step3:在Untiy的Asset下建立一個C#腳本,命名為write,編寫如下程式碼。
在Untiy中要與Arduino溝通,同樣要使用到序列通訊SerialPort的指令。
1.using System.IO.Ports:調用控制序列埠的類別。
2.SerialPort 變數 = new SerialPort("COM8",9600):設定連接埠與鮑率,請與Arduino實際連接情況一致。
3.變數.Open();變數.IsOpen:開啟序列埠連線,是否開啟。
4.變數.Read();變數.Write():讀值、寫值。
Step4:建立一個空物件,並將write腳本丟進物件。
Step5:設定。在file->Build Settings->Player Settings->Other Settings展開後往底下找到Api Compatibility Level,將.Net 2.0 Subs改為.Net 2.0。如此一來,在調用控制序列埠時才不會出錯。
留言 💬 (0)
還沒有留言,來當第一個。