tony_uno 发表于 2017-8-24 14:39:08

arduino pro mini 与MPU6050通讯的问题

环境:
arduino pro mini 一块
mpu6050 (GY-521) 一块

ArduinoProMini与mpu6050的接线:
VCC--VCC
GND--GND
A4--SDA
A5--SCL

问题现象:
用Arduino 的Wire 库函数读取mpu6050数据,发现读取的数据错位,总是在最开始会读取到一个0x0 的字节,
感觉只有在读取下一个字节的时候,mpu6050才会返回上一个字节。哪位朋友知道原因?
代码如下:

#include <Wire.h>
#defineMPU6050_ADD    0x68 //MPU6050的IIC地址
#definePWR_MGMT_1   0x6B //电源管理,典型值:0x00(正常启用)
#defineWHO_AM_I       0x75 //此寄存器存储IIC地址(默认数值0x68,只读)

void setup() {
// put your setup code here, to run once:
Wire.begin(); //默认作为master设备打开
Serial.begin(9600); //串口通讯的波特率设置为9600

Wire.beginTransmission(MPU6050_ADD);
Wire.write(PWR_MGMT_1);
Wire.write(0);
Wire.endTransmission(true);

Serial.println("**********");
}

void loop() {
// put your main code here, to run repeatedly:
Wire.beginTransmission(MPU6050_ADD);
Wire.write(WHO_AM_I);
Wire.requestFrom(MPU6050_ADD, 1, true);
Wire.endTransmission(true);
while(Wire.available()==1) {
    unsigned char tmpChar=Wire.read();
    Serial.print("WHO_AM_I register is: ");
    Serial.print(tmpChar, BIN);
    Serial.print("0x");
    Serial.println(tmpChar, HEX);
}
delay(1000);
}

串口返回数据如下:
**********
WHO_AM_I register is: 00x0
WHO_AM_I register is: 11010000x68
WHO_AM_I register is: 11010000x68
WHO_AM_I register is: 11010000x68
WHO_AM_I register is: 11010000x68
WHO_AM_I register is: 11010000x68
**********                                              (这里我按了arduino pro mini 的复位键,程序重新开始运行,现象依旧)
WHO_AM_I register is: 00x0
WHO_AM_I register is: 11010000x68
WHO_AM_I register is: 11010000x68
WHO_AM_I register is: 11010000x68
WHO_AM_I register is: 11010000x68
WHO_AM_I register is: 11010000x68

通幽境 发表于 2017-8-24 16:29:55

在setup()最后加个delay(2000);试试

tony_uno 发表于 2017-8-24 17:11:25

在串口初始化完成以后和setup()最后个加了delay(2000); 现象一就,还是会多出一个字节数据,:dizzy:
// put your setup code here, to run once:
Wire.begin(); //默认作为master设备打开
Serial.begin(9600); //串口通讯的波特率设置为9600
delay(2000);

Wire.beginTransmission(MPU6050_ADD);
Wire.write(PWR_MGMT_1);
Wire.write(0);
Wire.endTransmission(true);

Serial.println("**********");
delay(2000);

tony_uno 发表于 2017-8-25 14:00:44

刚才用mpu6050的库文件实验了一下,直接可以调出正确的数据。但是用wire库文件就会出现多一个字节的问题,真是奇了怪了。哪位朋友用一楼提供的程序跑一下,看看也是多出一个字节数据吗?要不是,估计可能就是这块mpu6050的问题了。
页: [1]
查看完整版本: arduino pro mini 与MPU6050通讯的问题