|
发表于 2018-3-20 10:16:20
|
显示全部楼层
#include <I2Cdev.h>
#include <MPU6050.h>
#include <Wire.h>
MPU6050 accelgyro;
int16_t ax,ay,az;
int16_t gx,gy,gz;
//float ax_pianyi,ay_pianyi,az_pianyi; //加速度计偏移量
//float gx_pianyi,gy_pianyi,gz_pianyi; //陀螺仪偏移量
float ax_pianyi=739; //由500组原始数据得出的系统原始偏移误差
float ay_pianyi=386;
float az_pianyi=892;
float gx_pianyi=-372;
float gy_pianyi=162;
float gz_pianyi=118;
bool blinkstate=false;
void setup()
{
Wire.begin();
Serial.begin(9600);
accelgyro.initialize();
// setFullScaleGyroRange(MPU6050_GYRO_FS_250);
// setFullScaleAccelRange(MPU6050_ACCEL_FS_2);
// uint8_t getFullScaleAccelRange();
// void setFullScaleAccelRange(uint8_t 8);
/*unsigned short times = 200; //采样次数
for(int i=0;i<times;i++)
{
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); //读取六轴原始数值
ax_pianyi += ax; ay_pianyi += ay; az_pianyi += az; //采样和
gx_pianyi += gx; gy_pianyi += gy; gz_pianyi += gz;
}
ax_pianyi /= times; ay_pianyi /= times; az_pianyi /= times; //计算加速度计偏移
gx_pianyi /= times; gy_pianyi /= times; gz_pianyi /= times; //计算陀螺仪偏移 */
}
void loop()
{
accelgyro.getMotion6(&ax,&ay,&az,&gx,&gy,&gz);
ax=ax-ax_pianyi;
ay=ay-ay_pianyi;
az=az-az_pianyi;
gx=gx-gx_pianyi;
gy=gy-gy_pianyi;
gz=gz-gz_pianyi;
/* Serial.print(ax-ax_pianyi);Serial.print(" ");
Serial.print(ay-ay_pianyi);Serial.print(" ");
Serial.print(az-az_pianyi);Serial.print(" ");
Serial.print(gx-gx_pianyi);Serial.print(" ");
Serial.print(gy-gy_pianyi);Serial.print(" ");
Serial.print(gz-gz_pianyi);Serial.print("\n");*/
Serial.print(ax);Serial.print(" ");
Serial.print(ay);Serial.print(" ");
Serial.print(az);Serial.print(" ");
Serial.print(gx);Serial.print(" ");
Serial.print(gy);Serial.print(" ");
Serial.print(gz);Serial.print("\n");
blinkstate=!blinkstate;
delay(100);
// Serial.print("\n");
}
以上是我的代码,请问要怎么改啊?真的不知道这个要怎么实现,在这里卡了很久了。我在头文件里面把量程的2改成8,但是传感器在静止时候,还是输出16384左右,也就是还是2g的量程,没有变化啊 |
|