獲取原始資料,然後計算
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 之後就不難了,實現起來比較複...