ArduinoとUnityを連携させることで、センサー入力やモーター制御などのハードウェア情報をリアルタイムでゲームやシミュレーションに反映させることができます。ここでは、初心者向けに接続方法や基本の実装手順を解説します。
必要な準備
ArduinoとUnityを接続するには、以下が必要です。
- Arduinoボード(Uno、Megaなど)
- Arduino IDE
- Unity(推奨バージョン:2021以降)
- シリアル通信に対応したUSBケーブル
また、Unity側でシリアルポート通信を行うためのC#スクリプトも準備します。
Arduino側の設定
まずArduino IDEで、センサーからのデータやボタン入力などをシリアル通信で送信するコードを書き込みます。
例:温度センサー値を送る場合
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(A0);
Serial.println(sensorValue);
delay(100);
}
ポイントは Serial.begin(9600) の通信速度をUnity側と合わせることです。
Unity側の設定
Unityで新規C#スクリプトを作成し、SerialPortクラスを使用してArduinoのデータを読み取ります。
基本的な例。
using UnityEngine;
using System.IO.Ports;
public class ArduinoReader : MonoBehaviour {
SerialPort sp = new SerialPort("COM3", 9600);
void Start() {
sp.Open();
sp.ReadTimeout = 100;
}
void Update() {
if (sp.IsOpen) {
try {
string value = sp.ReadLine();
Debug.Log(value);
} catch (System.Exception) {
}
}
}
}
ポイント。
- Arduinoの接続ポート(COM番号)を正しく設定
- シリアル通信速度(baud rate)をArduinoと合わせる
- ReadTimeoutを設定して通信の安定化を図る
データの利用例
取得したセンサーデータはゲームオブジェクトの移動や色変更などに活用できます。
例:センサー値に応じてCubeの高さを変える場合
float sensorValueFloat = float.Parse(value);
transform.position = new Vector3(transform.position.x, sensorValueFloat / 10.0f, transform.position.z);
注意点
- ArduinoとUnityの両方で同じ通信速度を使用する
- 複数デバイスを接続する場合はポート管理を注意する
- UnityのEditorで接続する際は、実行前にSerialPortが開いているか確認
まとめ
ArduinoとUnityの接続はシリアル通信を使えば比較的簡単に実現可能です。Arduino側でデータを送信し、Unity側で受信・処理する基本構造を押さえれば、様々なインタラクティブアプリやゲームに応用できます。


コメント