|
楼主 |
发表于 2012-8-22 09:13:27
|
显示全部楼层
本帖最后由 pww999 于 2012-8-22 10:00 编辑
简单写了个按下按钮自动减去偏差,0漂会变化,所以效果不会很好?试试:
int mn;
float m,n;
....
void setup()
{
pinMode(4,INPUT);
m=0;
n=0;
.....
}
void loop() {
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
//-----------------------------------------------------------------------------------------------------------------
//或许放在中断里处理比较好,减少程序运行时间
mn=digitalRead(4);
if(mn==high){ //检测按钮是否被按下 高电平时执行
angleA= atan2(ay , az) * 180 / pi; // 根据加速度分量得到的角度(degree)
omega=(gx )/Gyr_Gain; // 当前角速度(degree/s)
if (angleA>0){m=angleA;}
else {m=-angleA;}
if (omega>0){n=omega;}
else {n=-omega;}
}
angleA= atan2(ay , az) * 180 / pi-m; // 根据加速度分量得到的角度(degree)
omega=(gx )/Gyr_Gain-n; // 当前角速度(degree/s)
...... |
|