#include <MPU6050_tockn.h>//在编译代码前,请先安装这个库
#include <Wire.h>
#define SDA 13 //定义I2C的SDA引脚
#define SCL 14 //定义I2C的SCL引脚
MPU6050 mpu6050(Wire);//将MPU6050库关联到I2C引脚上
int16_t ax,ay,az; //定义3个轴的加速度值
int16_t gx,gy,gz; //定义变量以保存陀螺仪3轴的值
long timer = 0;
void setup() {
Serial.begin(115200);
Wire.begin(SDA, SCL); //将I2C引脚映射到13和14号引脚上
mpu6050.begin(); //初始化MPU6050
mpu6050.calcGyroOffsets(true); //设置自动获取陀螺仪偏移数据
}
void loop() {
if(millis() - timer > 1000){ //使用非阻塞的方式,每隔1秒获取并处理打印陀螺仪数据
mpu6050.update(); //更新一下陀螺仪数据
getMotion6(); //获得加速度值和陀螺仪值
Serial.print("\na/g:\t");
Serial.print(ax); Serial.print("\t");
Serial.print(ay); Serial.print("\t");
Serial.print(az); Serial.print("\t");
Serial.print(gx); Serial.print("\t\t");
Serial.print(gy); Serial.print("\t\t");
Serial.println(gz);
Serial.print("a/g:\t");
Serial.print((float)ax / 16384); Serial.print("g\t");
Serial.print((float)ay / 16384); Serial.print("g\t");
Serial.print((float)az / 16384); Serial.print("g\t");
Serial.print((float)gx / 131); Serial.print("d/s \t");
Serial.print((float)gy / 131); Serial.print("d/s \t");
Serial.print((float)gz / 131); Serial.print("d/s \n");
timer = millis();
}
}
//获得加速度值和陀螺仪值
void getMotion6(void){
ax=mpu6050.getRawAccX();//gain the values of X axis acceleration raw data
ay=mpu6050.getRawAccY();//gain the values of Y axis acceleration raw data
az=mpu6050.getRawAccZ();//gain the values of Z axis acceleration raw data
gx=mpu6050.getRawGyroX();//gain the values of X axis Gyroscope raw data
gy=mpu6050.getRawGyroX();//gain the values of Y axis Gyroscope raw data
gz=mpu6050.getRawGyroX();//gain the values of Z axis Gyroscope raw data
}
Loading
esp32-s3-devkitc-1
esp32-s3-devkitc-1