最近需要基于Arduino nano(图4)编写一个简单飞控,首先需要完成的就是实现Arduino nano与MPU6050的I2C通信。本来觉得是非常简单的事,但过程中遇到了很多bug,对于一个小白来说还是比较崩溃的,耗时三天找了各种资料才刚刚调通,鉴于网上相关资料比较缺乏,虽然没什么技术含量,还是写出来供未来可能会和我一样崩溃的人来做参考。
本文中使用的姿态传感器是JY61型号(图1),但由于进行I2C通信是直接与MPU6050芯片进行通讯,因此JY61型号多出的滤波等功能并没有用到,因此本例适用于JY61(图1,参考价格58)/JY61P(图2)/GY521(图3参考价格9.9)。
图1 JY61
图2 JY61P
图3 GY521
图4 Arduino nano
准备:
1、Arduino nano, Arduino Uno(或AVR USB,更便宜)
2、姿态传感器(MPU6050芯片),型号JY61/JY61P/GY521
3、杜邦线若干
4、装有Arduino IDE的电脑一台
原理:
I2C通讯协议此处不做赘述,可以在哔哩哔哩网站上搜索清华大学曾鸣老师的ARM微控制课程进行了解。
接线方法:
Arduino A4,A5,5V,GND分别接姿态传感器的SDA,SCL,VCC,GND。
通常的做法:
参考资料:https://www.yiboard.com/thread-1370-1-1.html
#include "Wire.h" // This library allows you to communicate with I2C devices.const int MPU_ADDR = 0x68; // I2C address of the MPU-6050. If AD0 pin is set to HIGH, the I2C address will be 0x69.int16_t accelerometer_x, accelerometer_y, accelerometer_z