中级会员
- 积分
- 312
- 威望
- 161
- 贡献
- 99
- 兑换币
- 104
- 注册时间
- 2013-6-11
- 在线时间
- 26 小时
|
1249652816 发表于 2013-8-10 20:51
MPU6050求教学
给你核心程序,你慢慢琢磨把!
float Read_Acc_x()
{
float Accel_x,Accel_z, Angle_accel;
//------加速度--------------------------
//加速度计量程为2g时,换算关系:16384 LSB/g
//角度较小时,x=sinx得到角度(弧度), deg = rad*180/3.14
//因为x>=sinx,故乘以1.3适当放大
Accel_x = GetData(ACCEL_XOUT_H); //从mpu6050读取X轴加速度
Accel_z = GetData(ACCEL_ZOUT_H); //从mpu6050读取z轴加速度
if(Accel_x>0)
{
Angle_accel = atan2((float)Accel_x,(float)Accel_z)*(180/3.14159265);//反正切计算rad
/* atan2(y,x)是表示X-Y平面上所对应的(x,y)坐标的角度,
它的值域范围是(-Pi,Pi)
用数学表示就是:atan2(y,x)=arg(y/x)-Pi
当y<0时,其值为负,
当y>0时,其值为正. atan2*180/Pi可以计算出角度值 */
}
else
{
Angle_accel = atan2((float)Accel_z,(float)Accel_x)*(180/3.14159265)-90;//反正切计算
if(Accel_z<0)
Angle_accel=Angle_accel+360;
Angle_accel = -Angle_accel;
}
/* atan2(y,x)是表示X-Y平面上所对应的(x,y)坐标的角度,
它的值域范围是(-Pi,Pi)
用数学表示就是:atan2(y,x)=arg(y/x)-Pi
当y<0时,其值为负,
当y>0时,其值为正. atan2*180/Pi可以计算出角度值 */
return Angle_accel;
}
|
|