ADXL345角度转换疑问

2019-08-10 16:32发布

 一直在学习原子哥的例程,今天看到了ADXL345,对其中的角度转换有些不明。
弧度转化为角度应该是*180/3.14的关系,但是程序中却是*1800/3.14,不知这个10倍的关系是怎么出来的呢?请大家指教~谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
32条回答
阿凯
1楼-- · 2019-08-13 22:10
正点原子 发表于 2013-3-7 23:20
看代码都不看注释的,这年头是不是很流行啊?

//得到角度
//x,y,z:x,y,z方向的重力加速度分量(不需要单位, ...

原子哥你好我画了个图与Z轴的夹角 计算temp=sqrt((x*x+y*y))/z;
能理解,那为什么与X的和与Y的都变倒数了,我觉得与X的夹角应该是temp=sqrt((z*z+y*y))/x;
正点原子
2楼-- · 2019-08-10 19:55
看代码都不看注释的,这年头是不是很流行啊?

//得到角度
//x,y,z:x,y,z方向的重力加速度分量(不需要单位,直接数值即可)
//dir:要获得的角度.0,与Z轴的角度;1,与X轴的角度;2,与Y轴的角度.
//返回值:角度值.单位0.1°.
short ADXL345_Get_Angle(float x,float y,float z,u8 dir)
{
float temp;
  float res=0;
switch(dir)
{
case 0://与自然Z轴的角度
  temp=sqrt((x*x+y*y))/z;
  res=atan(temp);
  break;
case 1://与自然X轴的角度
  temp=x/sqrt((y*y+z*z));
  res=atan(temp);
  break;
  case 2://与自然Y轴的角度
  temp=y/sqrt((x*x+z*z));
  res=atan(temp);
  break;
  }
return res*1800/3.14;
}

注意单位!!!
huafei123
3楼-- · 2019-08-10 20:00
回复【2楼】正点原子:
---------------------------------
为什么要以0.1°作为单位呢?用1°作为单位不是更加直观么?是截断误差和精度方面的考虑么?
正点原子
4楼-- · 2019-08-11 01:19
你认为呢?
内有元基
5楼-- · 2019-08-11 06:35
 精彩回答 2  元偷偷看……
正点原子
6楼-- · 2019-08-11 10:26
回复【5楼】内有元基:
---------------------------------
当然有影响了,速度就是受加速度影响啊...

一周热门 更多>