ESP32 Arduino MPU6050笔记

时间:2025-04-23 07:32:28

i2cdevlib只支持arduino nano等系列芯片,以及esp8266,但不支持esp32

1、只获取原始数据的话:

#include<>
#define SDA 4
#define SCL 15

const int MPU_addr=0x68; // I2C address of the MPU-6050
int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;

void setup()
{
	(SDA, SCL);
	(MPU_addr);
	(0x6B); // PWR_MGMT_1 register
	(0); // set to zero (wakes up the MPU-6050)
	(true);
	(9600);
}

void loop()
{
	(MPU_addr);
	(0x3B); // starting with register 0x3B (ACCEL_XOUT_H)
	(false);
	(MPU_addr,14,true); // request a total of 14 registers
	AcX=()<<8|(); // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)
	AcY=()<<8|(); // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)
	AcZ=()<<8|(); // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)
	Tmp=()<<8|(); // 0x41 (TEMP_OUT_H) & 0x42 (TEMP_OUT_L)
	GyX=()<<8|(); // 0x43 (GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L)
	GyY=()<<8|(); // 0x45 (GYRO_YOUT_H) & 0x46 (GYRO_YOUT_L)
	GyZ=()<<8|(); // 0x47 (GYRO_ZOUT_H) & 0x48 (GYRO_ZOUT_L)
	("AcX = "); (AcX);
	(" | AcY = "); (AcY);
	(" | AcZ = "); (AcZ);
	(" | Tmp = "); (Tmp/340.00+36.53); //equation for temperature in degrees C from datasheet
	(" | GyX = "); (GyX);
	(" | GyY = "); (GyY);
	(" | GyZ = "); (GyZ);
	delay(333);
}

2、需要获取dmp数据,在管理库中检索mpu6050,安装MPU6050_tockn,对应github地址:

/tockn/MPU6050_tockn

注意,修改引脚号:

(21, 22);//SDA SDL for esp32