Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将mpu6050的原始数据转换为控制鼠标光标?_Java_Arduino_Mouse_Mpu6050 - Fatal编程技术网

Java 如何将mpu6050的原始数据转换为控制鼠标光标?

Java 如何将mpu6050的原始数据转换为控制鼠标光标?,java,arduino,mouse,mpu6050,Java,Arduino,Mouse,Mpu6050,我有一个项目要完成,这是关于“控制PC鼠标光标使用传感器”,其中我必须使用Java,Arduino和MPU-6050作为传感器 我计划使用下面的代码来移动鼠标光标 public void moveRight() throws AWTException { PointerInfo a = MouseInfo.getPointerInfo(); Point b = a.getLocation(); int x = (int) b.getX(); int y = (int) b.get

我有一个项目要完成,这是关于“控制PC鼠标光标使用传感器”,其中我必须使用Java,Arduino和MPU-6050作为传感器

我计划使用下面的代码来移动鼠标光标

public void moveRight() throws AWTException {
  PointerInfo a = MouseInfo.getPointerInfo();
  Point b = a.getLocation();
  int x = (int) b.getX();
  int y = (int) b.getY();
  Robot r = new Robot();
  r.mouseMove(x+10, y );}
我计划创建moveRight()、moveLeft()moveUP()、moveDown()函数来移动鼠标光标。此功能将在MPU-6050传感器移动的基础上调用


但我不知道如何将MPU-6050的原始数据转换为光标移动的可用数据

MPU6050有一个加速计和一个陀螺仪(还有一个温度传感器)。您需要的是设备的方向,要获得该方向,您可以计算
Euler
角度
MPU6050输入原始加速计和陀螺仪值,您必须将其转换为
欧拉角
,该值可以通过任何串行总线发送到您的PC。其余部分由Java代码负责

如何开始
1.使用arduino库获取原始读数
和(这是一个著名且编写良好的库)
2.使用互补滤波器(使用,你只需要acc和陀螺仪)来“传感器融合”(谷歌:传感器融合)这两个读数来计算偏航、俯仰、横滚(欧拉角)。这些是您在三维平面中的方向
3.将这些计算传递到PC,您可以根据方向指定鼠标行为。比如,如果我们有更高的倾斜度,鼠标指针的移动速度会更快

为什么这么麻烦?
你的应用程序需要控制鼠标,比如说你如何移动你的手。我们本可以仅使用加速度计读数来计算倾斜角度,但你的手不是静止的物体,它会影响传感器产生的加速度超过“重力加速度”
因此,建议您使用互补滤波器(或扩展卡尔曼滤波器,这是一个很好的读数,但对于您的应用程序来说可能是一个过高的值)来计算角度

我链接的每个回购协议都有示例代码和资源来帮助您入门。祝你好运