文档详情

基于单片机的自平衡无人机的设计重873附件.docx

发布:2024-12-17约4.56千字共9页下载文档
文本预览下载声明

附录1mpu6050程序

#includeALL_DATA.h

#includempu6050.h

#includeI2C.h

#includefilter.h

#includestring.h

#includeLED.h

#includemyMath.h

#includekalman.h

#includeANO_Data_Transfer.h

#define SMPLRT_DIV 0x19

#define CONFIGL 0x1A

#define GYRO_CONFIG 0x1B

#define ACCEL_CONFIG 0x1C

#define ACCEL_ADDRESS 0x3B

#define ACCEL_XOUT_H 0x3B

#define ACCEL_XOUT_L 0x3C

#define ACCEL_YOUT_H 0x3D

#define ACCEL_YOUT_L 0x3E

#define ACCEL_ZOUT_H 0x3F

#define ACCEL_ZOUT_L 0x40

#define TEMP_OUT_H 0x41

#define TEMP_OUT_L 0x42

#define GYRO_XOUT_H 0x43

#defineGYRO_ADDRESS0x43

#define GYRO_XOUT_L 0x44

#define GYRO_YOUT_H 0x45

#define GYRO_YOUT_L 0x46

#define GYRO_ZOUT_H 0x47

#define GYRO_ZOUT_L 0x48

#define PWR_MGMT_1 0x6B

#define WHO_AM_I 0x75

#defineMPU6050_PRODUCT_ID0x68

#defineMPU6052C_PRODUCT_ID0x72

#ifdef USE_I2C_HARDWARE

#defineMPU6050_ADDRESS0xD0

#else

#defineMPU6050_ADDRESS0xD0

#endif

int16_tMpuOffset[6]={0};

staticvolatileint16_t*pMpu=(int16_t*)MPU6050;

int8_tmpu6050_rest(void)

{

if(IIC_Write_One_Byte(MPU6050_ADDRESS,PWR_MGMT_1,0x80)==FAILED)

returnFAILED;

delay_ms(20);

returnSUCCESS;

}

int8_tMpuInit(void)

{

uint8_tdate=SUCCESS;

bLED_L();

aLED_L();

fLED_H();

hLED_H();

do

{

date=IIC_Write_One_Byte(MPU6050_ADDRESS,PWR_MGMT_1,0x80);

delay_ms(30);

date+=IIC_Write_One_Byte(MPU6050_ADDRESS,SMPLRT_DIV,0x02);

date+=IIC_Write_One_Byte(MPU6050_ADDRESS,PWR_MGMT_1,0x03);

date+=IIC_Write_One_Byte(MPU6050_ADDRESS,CONFIGL,0x03);

date+=IIC_Write_One_Byte(MPU6050_ADDRESS,GYRO_CONFIG,0x18);

date+=IIC_Write_One_Byte(MPU6050_ADDRESS,ACCEL_CONFIG,0x09);

MPU_Err=1;

}

while(date!=SUCCESS);

date=IIC_Read_One_Byte(MPU6050_ADDRESS,0x75);

if(date!=MPU6050_PRODUCT_ID)

returnFAILED;

else

MpuGetOffset();

MPU_Err=0;

returnSUCCESS;

}

#defineGyro_Read()IIC_read_Bytes(MPU6050_ADDRESS,0X3B,buffer,6)

#defineAcc_Read()IIC_read_Bytes(MPU6050_ADDRESS,

显示全部
相似文档