我如何从两个不同的arduino板发送信息到unity 3d c#

本文关键字:arduino 信息 3d unity 两个 | 更新日期: 2023-09-27 18:15:21

我使用两个mpu6050传感器,2个arduino板(1个arduino Mega和1个arduino Uno)和unity 3d。每块板连接一个mpu6050,负责将接收到的信息发送给unity。我有麻烦从统一获得数据(我没有问题的信息查看它从Arduino的IDE)我使用两个不同的COM,每个板一个。

与我目前的统一代码我有问题,因为它崩溃时,我试图调试它,当它不发送一个异常,说类似:

Ports.io  access denied

我有以下arduino代码(它被恢复到只影响这个问题的部分):

void setup() {
         Serial.begin(9600);
}
void loop() {
         Serial.println(map((ypr[2] * 180/M_PI),-90,90,0,360));
         delay(20);
}

注意:MPU发送的值从-90到90,所以我使用map函数在0到360的范围内转换这些值

这是统一代码(我有两个不同的代码,但唯一的区别是它说"COM4",另一个说"COM3"):

using UnityEngine;
using System.Collections;
using System.IO.Ports;
public class Mover_Con_Arduino : MonoBehaviour
{
   SerialPort sp = new SerialPort("COM4", 9600);
void Start()
{
}
void Update()
{
    if (!sp.IsOpen)
    {
            sp.Open();
    }
    float rot = float.Parse (sp.ReadLine ());
    transform.localEulerAngles = new Vector3 (rot, 0, 0);
    print (rot);    
}
}

我正在做的是使用从arduino发送到unity的值来旋转游戏对象

我如何从两个不同的arduino板发送信息到unity 3d c#

我最好的猜测是sp.Open()未能打开COM端口,并在sp.ReadLine()上抛出异常;