Uniduinoを使ったUnityとArduinoの通信
大きく分けて2つの方法がある。一つはSerialPortを使う方法、もう一つはUniduinoを使う方法。
Uniduinoは20$必要ですが、その分非常に使いやすく手間も省けるので自分はUniduinoを使います。SerialPortを使った方法については
SerialPort または Uniduino を使った Unity と Arduino を連携させる方法調べてみた - 凹みTips
を参照してください。
それではUniduinoの使い方
1. UniduinoをAssetStoreからダウンロードする
2. Arduinoを開いて以下のようにプロジェクトを開いて焼き込む(Arduino側の設定はこれだけ、もしコンパイルが失敗したら、ポートの設定を確認すべき)
3. Unityを開いてUniduino/Prefab/Uniduinoをシーン上に配置(最初は、Window/UniduinoからInstall~を実行してUnityを再起動)
4. シーン内に適当なサンプル(ArduinoController)を配置し、適当なコード(ArduinoController.cs)を登録させる
5. コード内にArduinoと同じようなコードを記述する。以下参照
using UnityEngine; using System.Collections; using Uniduino; public class ArduinoController : MonoBehaviour { private Arduino arduino; private int leg = 11; private int down = 12; private int up = 13; private int i = 0; void Start () { // インスタンスを取得 arduino = Arduino.global; if (arduino == null) { Debug.Log ("arduino's instanse is null"); } arduino.Setup (ConfigurePins); // コルーチンでループ StartCoroutine (Loop()); } // Pinの設定 void ConfigurePins() { arduino.pinMode(up, PinMode.OUTPUT); arduino.pinMode(down, PinMode.OUTPUT); arduino.pinMode (leg, PinMode.OUTPUT); } private IEnumerator Loop() { while (i < 200) { arduino.digitalWrite(leg, Arduino.HIGH); yield return new WaitForSeconds(1); arduino.digitalWrite(leg, Arduino.LOW); arduino.digitalWrite(down, Arduino.HIGH); yield return new WaitForSeconds(1); arduino.digitalWrite(down, Arduino.LOW); arduino.digitalWrite(up, Arduino.HIGH); yield return new WaitForSeconds(1); arduino.digitalWrite(up, Arduino.LOW); i++; } } }