ArduinoとUnityを接続する方法:初心者向けガイド

プログラミング

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側で受信・処理する基本構造を押さえれば、様々なインタラクティブアプリやゲームに応用できます。

コメント

タイトルとURLをコピーしました