打印
[MCU]

有用过GY-271三轴电子指南针的大神吗

[复制链接]
1950|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
boltmy|  楼主 | 2013-8-21 16:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
能用GY-271三轴电子指南针检测水平吗?

相关帖子

沙发
boltmy|  楼主 | 2013-8-21 16:17 | 只看该作者
//主程序********
//*********************************************************
void main()
{ // bit sign_bit;
   unsigned int i;
   int x,y,z;
   double angle,W;

   delay(500);//500ms                       
   InitLcd();
   Init_HMC5883();
  while(1)            //循环
  {
    Multiple_Read_HMC5883();      //连续读出数据,存储在BUF中
//---------显示X轴
    x=BUF[0] << 8 | BUF[1]; //Combine MSB and LSB of X Data output register
    z=BUF[2] << 8 | BUF[3]; //Combine MSB and LSB of Z Data output register
    y=BUF[4] << 8 | BUF[5]; //Combine MSB and LSB of Y Data output register
        W=sqrt(pow(x,2)+pow(y,2));
    angle= atan2((double)z,(double)W) * (180 / 3.14159265) +180; // angle in degrees
    angle*=10;
    conversion(angle);       //计算数据和显示
        DisplayOneChar(2,0,'A');
    DisplayOneChar(3,0,':');
    DisplayOneChar(4,0,qian);
    DisplayOneChar(5,0,bai);
    DisplayOneChar(6,0,shi);
    DisplayOneChar(7,0,'.');
        DisplayOneChar(8,0,ge);

    for (i=0;i<10000;i++);   //延时                  
  }
}

使用特权

评论回复
板凳
boltmy|  楼主 | 2013-8-21 16:18 | 只看该作者
计算Z与水平面的夹角,用W=sqrt(pow(x,2)+pow(y,2));
angle= atan2((double)z,(double)W) * (180 / 3.14159265) +180; // angle in degrees
    angle*=10;
可以吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

45

帖子

0

粉丝