mpu9150+audrino+9轴陀螺仪

此文翻译了国外大神的作品,不过也有些自己努力的结果,所以勉强就算原创吧,首先用到的硬件:

arduino nano3.0,mpu9150.

软件:

i2cdevlib-master,arduino1.5.2.,unity3d。

连线方法:

mpu9150的scl连接arduino的A5。

mpu9150的sda连接arduino的A4.

mpu9150的int连接arduino的d2.

mpu9150的gnd连接arduino的gnd.

mpu9150的vdd连接arduino的3.3v.

用到的库和源文件如下:

  • i2cdevlib-master/Arduino/I2Cdev
  • i2cdevlib-master/Arduino/MPU6050

用arduino打开mpu6050就可以了,编译下ok上传就可以了。

接下来用unity3d来工作:

1,启动unity3d,GameObject->create other->cube

2,创建脚本,脚本如下:

using System;
using System.IO.Ports;
using System.Threading;
using UnityEngine;

public class ControlObjectByMPU9150InUnity : MonoBehaviour {
    private const string SERIAL_PORT = "COM4";
    private const int SERIAL_BAUD_RATE = 115200;
    private const int SERIAL_TIMEOUT = 100;

    private Thread _readThread;
    private static SerialPort _serialPort;
    private static bool _continue;

    private static Quaternion _handQuaternion = new Quaternion();

    void Start() {
        _readThread = new Thread(Read);
        _serialPort = new SerialPort(SERIAL_PORT, SERIAL_BAUD_RATE);
        _serialPort.ReadTimeout = SERIAL_TIMEOUT;
        _serialPort.Open();
        _continue = true;
        _readThread.Start();
    }

    void Update() {
        transform.rotation = _handQuaternion;
    }

    void OnApplicationQuit() {
        _continue = false;
        _readThread.Join();
        _serialPort.Close();
    }

    private static void Read() {
        string[] values;
        float x, y, z, w;
        while (_continue) {
            if (_serialPort.IsOpen) {
                try {
                    values = _serialPort.ReadLine().Split('\t');
                    if (values[0] == "quat") {
                        x = float.Parse(values[2]);
                        y = -float.Parse(values[4]);
                        z = float.Parse(values[3]);
                        w = float.Parse(values[1]);
                        _handQuaternion.Set(x, y, z, w);
                    }
                } catch (TimeoutException) {
                }
            }
            Thread.Sleep(1);
        }
    }
}
要注意一点:在unity3d中可能会提示说没有system.io.ports,这是需要修改下unity3d ->player setting->.net2.0,这样就可以了




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值