在单片机与MPU6050六轴传感器进行通信时,通常采用I2C(Inter-Integrated Circuit)接口,这是一种常用的串行通信协议,因其简单、高效而被广泛应用于各种嵌入式系统中。MPU6050是一款集成了三轴陀螺仪和三轴加速度计的传感器,通过I2C接口可以方便地与单片机进行数据交换。
硬件连接:
初始化I2C接口:
MPU6050初始化:
数据读取:
数据处理:
#include <Wire.h>
#define MPU6050_ADDR 0x68
void setup() {
Wire.begin();
Serial.begin(9600);
// 初始化MPU6050
Wire.beginTransmission(MPU6050_ADDR);
Wire.write(0x6B); // PWR_MGMT_1
Wire.write(0); // 解除睡眠模式
Wire.endTransmission();
}
void loop() {
Wire.beginTransmission(MPU6050_ADDR);
Wire.write(0x3B); // 起始地址为ACCEL_XOUT_H
Wire.endTransmission(false);
Wire.requestFrom(MPU6050_ADDR, 14, true);
if (Wire.available() == 14) {
int16_t ax = Wire.read() << 8 | Wire.read();
int16_t ay = Wire.read() << 8 | Wire.read();
int16_t az = Wire.read() << 8 | Wire.read();
int16_t gx = Wire.read() << 8 | Wire.read();
int16_t gy = Wire.read() << 8 | Wire.read();
int16_t gz = Wire.read() << 8 | Wire.read();
Serial.print("Accel: ");
Serial.print(ax);
Serial.print(", ");
Serial.print(ay);
Serial.print(", ");
Serial.println(az);
Serial.print("Gyro: ");
Serial.print(gx);
Serial.print(", ");
Serial.print(gy);
Serial.print(", ");
Serial.println(gz);
}
delay(100);
}