HMC5883樂和qmc5883來做電子指南針

2021-09-16 19:00:47 字數 1807 閱讀 3471

獲取原始資料,然後計算

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;

附件是使用了oled 0.96來做的指南針,雖然yz軸沒啥用,但是還是做了處理;

和iphone對比,基本上做到了5度之內的偏差;

hmc伺服器簡介

hmc是乙個圖形介面的軟體,執行在經過定製的red hat linux之上,用來對p670之類的機器作lpar。硬體控制管理器,用來做lpar,目前用於ibm 630 p650 p670 p690等等。hmc 是host management console 的意思,是manage host 地co...

通過hmc啟動lpar的終端

hmc可用來管理ibm p系列伺服器,使用hmc後,大部分對p系列伺服器的操作都可在hmc上完成.hmc本身是乙個linux機器,可使用ssh遠端登陸.通過ssh使用hscroot使用者登陸到hmc後,hmc啟動乙個受約束的shell,這樣使用者的活動範圍就被限制在了比較小的範圍內,只能完成對hmc...

Codeforces 588E 樹上主席樹 Lca

codeforces 588e duff in the army 西安邀請賽網路賽j的公升級版本,要求輸出具體的方案,這題就沒辦法離線水過去了。對dfs序建乙個主席樹,那麼對於每個詢問答案就是 sum u sum v sum lca u,v sum fa lca u,v 之後就不難了,實現起來比較複...