成人伊人|一艘游轮一百个女的一个男的|绿巨人污|韩国三级电影网址|国产深夜福利

當前位置: 首頁 > 傳感器常見問題 > 怎么通過adxl345輸出值計算出傾角?

相關商品

瀏覽歷史

怎么通過adxl345輸出值計算出傾角?
傳感器常見問題 / 2012-12-23

 此方法是通過勾股定理計算的,請參考以下程序:

 

// 加速的X軸用來算俯仰角;Y軸算橫滾角 
u16 Gx;
u16 Gy;
u16 Gz;
float Gxangle;
float Gyangle;
GVALUE ADXL345_GetValue(void)
{

來自:http://zhidao.baidu.com/question/447710682.html
Gx = (u16)ADXL345ReadData(0xA6,XL345_DATAX1);
Gx <<= 8;
Gx += (u16)ADXL345ReadData(0xA6,XL345_DATAX0);
Gy = (u16)ADXL345ReadData(0xA6,XL345_DATAY1);
Gy <<= 8;
Gy += (u16)ADXL345ReadData(0xA6,XL345_DATAY0);
Gz = (u16)ADXL345ReadData(0xA6,XL345_DATAZ1);
Gz <<= 8;
Gz += (u16)ADXL345ReadData(0xA6,XL345_DATAZ0);
if(Gx > 0x01FF)
{
Gx = -Gx;
Gx |= 0x8000; //得到補碼 去掉14 13 12位保留最后一個符號位
}
if(Gy > 0x01FF)
{
Gy = -Gy;
Gy |= 0x8000; //得到補碼 去掉14 13 12位保留最后一個符號位
}
if(Gz > 0x01FF)
{
Gz = -Gz;
Gz |= 0x8000; //得到補碼 去掉14 13 12位保留最后一個符號位
}
if(!(Gz & 0x8000)) //正 Gz最高位置為0
{
if(Gx & 0x8000) //負 Gx最高位置為1
{
Gx &= 0x7FFF ; //*0111 1111 1111 1111 最高的符號位變0
if(Gz == 0)
Gxangle = 90;
else
Gxangle = atan((double)Gx / (double)Gz) * 57.296;//arctan(x/z)*180/pi
Gx |= 0x8000; //恢復最高位
}
if(!(Gx & 0x8000)) //正 Gx最高位置為0
{
if(Gz == 0)
Gxangle = -90;
else
Gxangle = -atan((double) Gx / (double)Gz) * 57.296;//arctan(x/z)*180/pi
}
if(Gy & 0x8000)
{
Gy &= 0x7FFF ;
if(Gz == 0)
Gyangle = -90;
else
Gyangle = -atan((double)Gy / (double)Gz) * 57.296;//arctan(y/z)*180/pi
Gy |= 0x8000;
}
if(!(Gy & 0x8000))
{
if(Gz == 0)
Gyangle = 90;
else
Gyangle = atan((double)Gy / (double)Gz) * 57.296;//arctan(y/z)*180/pi
}
}
else //負 Gz最高位置為1
{
Gz &= 0x7FFF ; //0111 1111 1111 1111
if(Gx & 0x8000)
{
Gx &= 0x7FFF ;
Gxangle = 180 - atan((double)Gx / (double)Gz) * 57.296;
Gx |= 0x8000;
}
if(!(Gx & 0x8000))
{
Gxangle = -(180 - atan((double) Gx / (double)Gz) * 57.296);
}
if(Gy & 0x8000)
{
Gy &= 0x7FFF ;
Gyangle = 180 - atan((double)Gy / (double)Gz) * 57.296;
Gy |= 0x8000;
}
if(!(Gy & 0x8000))
{
Gyangle = -(180 - atan((double)Gy / (double)Gz) * 57.296);
}
Gz |= 0x8000;
}

}

用戶評論(共0條評論)

  • 暫時還沒有任何用戶評論
總計 0 個記錄,共 1 頁。 第一頁 上一頁 下一頁 最末頁
用戶名: 游客
E-mail:
評價等級:
評論內容: