概述
- 打算自己选型配件、画PCB以及焊元件,制作一个微型四轴飞行器。
- 主控板打算使用stm32,此处使用arduino来读取mpu6050只是为了便于开发和调试(arduino的串口监视器用起来很方便,便于打印输出调试信息到电脑),同时熟悉一下mpu6050的使用流程。
开发环境
- 操作系统:windows 10
- IDE:arduino 1.8.3
- 开发板:Arduino/Genuino Uno(seeedstudio与Arduino LLC为中国爱好者定制的中文版的开发板,与市面常见的Arduino Uno R3基本没什么区别)
- 六轴传感器模块:MPU6050
接线说明
程序流程
初始化I2C和串口
void setup() {
Wire.begin();
Serial.begin(9600);
}
使MPU6050开始工作
- 为了使MPU6050开始工作,需要向MPU6050的0x6B寄存器写入0数据(最开始照着别人的例程写的时候,把0x6b错看成0x68(大写的B和8好难分清),最后读取的结果要么是0要么是-1)
Wire.beginTransmission(0x68);
Wire.write(0x6b);
Wire.write(0);
Wire.endTransmission(true);
读取数据
- 一共需要读取7个寄存器的数据,每个寄存器均为16位的,所以一共是14个字节。
- 7个寄存器分别保存的是x、y、z方向的加速度,温度,x、y、z方向的角速度。
- 7个寄存器地址分别是0x3b、ox3d、0x3f、0x41、0x43、0x45和0x47(按照字节编址,每个寄存器两个字节,7个寄存器位于连续存储空间)。
int x,y,z = 0;
int t = 0;
int a,b,c = 0;
Wire.beginTransmission(0x68);
Wire.write(0x3B);
Wire.requestFrom(0x68, 14, true);
Wire.endTransmission(true);
源码
此处给出完整源码。
#include <Wire.h>
void setup() {
// put your setup code here, to run once:
Wire.begin()
Serial.begin(9600)
Wire.beginTransmission(0x68)
Wire.write(0x6B)
Wire.write(0)
Wire.endTransmission(true)
}
void loop() {
int x,y,z = 0
int t = 0
int a,b,c = 0
Wire.beginTransmission(0x68)
Wire.write(0x3B)
Wire.requestFrom(0x68, 14, true)
Wire.endTransmission(true)
x = Wire.read() << 8 | Wire.read()
y = Wire.read() << 8 | Wire.read()
z = Wire.read() << 8 | Wire.read()
t = Wire.read() << 8 | Wire.read()
a = Wire.read() << 8 | Wire.read()
b = Wire.read() << 8 | Wire.read()
c = Wire.read() << 8 | Wire.read()
Serial.print("Ax = ")
Serial.print(x)
Serial.print('\t')
Serial.print("Ay = ")
Serial.print(y)
Serial.print('\t')
Serial.print("Az = ")
Serial.print(z)
Serial.print('\t')
Serial.print("temperature = ")
Serial.print(t)
Serial.print('\t')
Serial.print("Cx = ")
Serial.print(a)
Serial.print('\t')
Serial.print("Cy = ")
Serial.print(b)
Serial.print('\t')
Serial.print("Cz = ")
Serial.println(c)
delay(20)
}
结果截图
- 打开arduino IDE的【工具】–>【串口监视器】(设置波特率为9600),编译并上传程序到开发板,可以查看读取的数据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)