欢迎光临散文网 会员登陆 & 注册

哈哈哈

2023-04-19 10:27 作者:芜湖男神建勋  | 我要投稿

#include <Adafruit_SSD1306.h>
#include "MPU6050.h"  //头文件
#include "I2Cdev.h"
//OLED相关
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);  //OLED引脚设置



#define N_  5
unsigned char i=0;
int16_t ax, ay, az;  //初始化变量
int16_t gx, gy, gz;
int32_t iax=0,iay=0,iaz=0;
int32_t igx=0,igy=0,igz=0;
int16_t cdata=0;
MPU6050 mpu;  //创建结构体名mpu

void setup() {
  Wire.begin();  //加入 I2C 总线序列
  Serial.begin(9600);  //开启串口,设置波特率
  delay(1000);
  mpu.initialize();  //库初始化
  mpu_init2();  //获取偏移量修正
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  //初始化OLED IIC总线
  display.clearDisplay();   // 清屏
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
}
void loop() {

  mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); 
  counter_data();  //数据计算
  test();
  delay(300);
}
void test(void)
{
   display.clearDisplay();  // 清屏
  display.setCursor(30, 0);
  display.print("MPU6050 Test");

  display.setCursor(30, 20);
  display.print("X:");
  display.println(ax);

  display.setCursor(30, 30);
  display.print("Y:");
  display.println(ay);

  display.setCursor(30, 40);
  display.print("Z:");
  display.println(az);

  display.display();
}
void mpu_init2(){
  unsigned char i=0,j=0;
  for(i=0;i<N_;i++){
    mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);    
    iax=iax+ax;iay=iay+ay;iaz=iaz+az;
    igx=igx+gx;igy=igy+gy;igz=igz+gz;
  }
  iax=iax/N_;iay=iay/N_;iaz=iaz/N_;
  igx=igx/N_;igy=igy/N_;igz=igz/N_;
}
void counter_data(){                    //将获取到的数据进行处理和计算
  
  ax=ax-iax;ay=ay-iay;az=az-iaz;        //计算偏移值
  gx=gx-igx;gy=gy-igy;gz=gz-igz;
  ax=ax/180;ay=ay/180;az=az/180;        
  Serial.print("mov_X=");Serial.print(ax);Serial.print("°");Serial.print("\t");
  Serial.print("mov_Y=");Serial.print(ay);Serial.print("°");Serial.print("\t");
  Serial.print("mov_Z=");Serial.print(az);Serial.print("°");Serial.print("\n");

}

哈哈哈的评论 (共 条)

分享到微博请遵守国家法律