Arduino 从MPU-9250获取航向/方向

Arduino 从MPU-9250获取航向/方向,arduino,accelerometer,gyroscope,magnetometer,Arduino,Accelerometer,Gyroscope,Magnetometer,我正试图从MPU-9250传感器获取航向,该传感器包含一个陀螺仪、加速度计和使用Arduino的磁强计 对于我的产品,我需要从设备中获取卷和标题。我已经知道怎么去拿面包卷了。使用Boulderflight MPU-9250库,我能够通过以下方式确定滚动: roll = 180 * atan(accY/sqrt(accX*accX + accZ*accZ))/M_PI; 我在某个地方找到了这个计算方法,它似乎运行得很好,我不得不承认我不知道它是如何运行的 对于我发现的标题: if (magY

我正试图从MPU-9250传感器获取航向,该传感器包含一个陀螺仪、加速度计和使用Arduino的磁强计

对于我的产品,我需要从设备中获取卷和标题。我已经知道怎么去拿面包卷了。使用Boulderflight MPU-9250库,我能够通过以下方式确定滚动:

roll = 180 * atan(accY/sqrt(accX*accX + accZ*accZ))/M_PI;
我在某个地方找到了这个计算方法,它似乎运行得很好,我不得不承认我不知道它是如何运行的

对于我发现的标题:

  if (magY > 0) { heading = 90 - atan(magX/magY)*(180/M_PI); }
  else if (magY < 0) { heading = 270 - atan(magX/magY)*(180/M_PI); }
  else if (magY == 0 && magX < 0) { heading = 180; }
  else if (magY == 0 && magX > 0) { heading = 0; }
if(magY>0){heading=90-atan(magX/magY)*(180/M_-PI)}
如果(magY<0){heading=270-atan(magX/magY)*(180/M_-PI)}
else如果(magY==0&&magX<0){heading=180;}
else如果(magY==0&&magX>0){heading=0;}
起初,这似乎是可行的,但只要你“滚动”设备,保持标题不变,标题的值就到处都是

有没有人用陀螺、加速度计或磁强计(C++中使用ARDUINO)来确定航向的好代码段?

< P>
具体来说,它对Arduino的横摇、俯仰和偏航进行了计算。

对于可能仍然认为有用的人,错误的输出是由于在代码中使用了
Sleep()
s造成的。显然这会弄乱测量结果。我用它们来制作LED图案。我认为下一个最好的方法是将
millis()
if
-语句结合使用,以重现
Sleep()
s。请尽量提供完整的答案。你能举个有效的例子吗?