欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: HMC5883和qmc5883來做指南針51單片機源程序 [打印本頁]

作者: wangbo0727    時間: 2019-4-4 16:35
標題: HMC5883和qmc5883來做指南針51單片機源程序

獲取原始數據,然后計算

附件是使用了OLED 0.96來做的指南針,雖然YZ軸沒啥用,但是還是做了處理;
和iphone對比,基本上做到了5度之內的偏差;


Multiple_Read_QMC5883(BUF);
magx=BUF[1] << 8 | BUF[0]; //Combine MSB and LSB of X Data output register  最高有效位
magy=BUF[3] << 8 | BUF[2]; //Combine MSB and LSB of Y Data output register
magz=BUF[5] << 8 | BUF[4]; //Combine MSB and LSB of Z Data output register
if(magx>0x7fff)magx-=0xffff;   
if(magy>0x7fff)magy-=0xffff;
if(magz>0x7fff)magz-=0xffff;
  magx=magx-offsetX;magy=magy-offsetY;magz=magz-offsetZ;
  
  Angle_XY= atan2((double)magy,(double)magx) * (180 / 3.14159265) + 180; //計算XY平面角度
  Angle_XZ= atan2((double)magz,(double)magx) * (180 / 3.14159265) + 180; //計算XZ平面角度
  Angle_YZ= atan2((double)magz,(double)magy) * (180 / 3.14159265) + 180; //計算YZ平面角

當然這還是不夠的,因為磁場便宜,或當地磁場問題會造成,xyz擬合的時候出現橢圓,所以要修正;
Multiple_Read_QMC5883(BUF);      //連續讀出數據,存儲在BUF中
X=BUF[1] << 8 | BUF[0]; //Combine MSB and LSB of X Data output register  最高有效位
Y=BUF[3] << 8 | BUF[2]; //Combine MSB and LSB of Y Data output register
Z=BUF[5] << 8 | BUF[4]; //Combine MSB and LSB of Z Data output register
if(X>0x7fff)X-=0xffff;   
if(Y>0x7fff)Y-=0xffff;
if(Z>0x7fff)Z-=0xffff;
  
    if (X > xMax)  
       xMax = X;  
     if (X < xMin )  
       xMin = X;  
     if(Y > yMax )  
       yMax = Y;  
     if(Y < yMin )  
       yMin = Y;  
     if(Z > zMax )  
       zMax = Z;  
     if(Z < zMin )  
      zMin = Z;  
   
if(abs(xMax - xMin) > 0 )  
offsetX = (xMax + xMin)/2;  
if(abs(yMax - yMin) > 0 )  
offsetY = (yMax + yMin)/2;  
if(abs(zMax - zMin) > 0 )  
offsetZ = (zMax +zMin)/2;


Keil代碼下載:
51單片機代碼.7z (57.28 KB, 下載次數: 199)


作者: QI0609    時間: 2019-8-21 11:52
謝謝啦,很強啊

作者: gc56198    時間: 2019-10-16 16:51
謝謝,終于找到了
作者: hero_huang    時間: 2023-3-17 16:02
暈,程序是51的不是STM32的大家如果要STM32的不要下




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1