c_bowie 发表于 2015-11-24 09:40:51

关于MPU6050与Mega配合使用的问题

大家好,初次发帖,不妥之处请见谅。
最近在做自己的平衡车,在论坛里面看了不少关于6050的帖子,学到了很多。
但坛子里面大多数使用uno来配合6050,我是用mega,它提供了专门的scl与sda接口,所以我就试着直接把它们与6050连接起来,结果连接时成功了,但不知道为什么只能上传有限组的数据。
如图:

请问这可能是什么原因造成的?谢谢!

代码如下(直接使用了某个帖子中的代码):
// Arduino Wire library is required if I2Cdev I2CDEV_ARDUINO_WIRE implementation
// is used in I2Cdev.h
#include "Wire.h"

// I2Cdev and MPU6050 must be installed as libraries, or else the .cpp/.h files
// for both classes must be in the include path of your project
#include "I2Cdev.h"
#include "MPU6050.h"

// class default I2C address is 0x68
// specific I2C addresses may be passed as a parameter here
// AD0 low = 0x68 (default for InvenSense evaluation board)
// AD0 high = 0x69
MPU6050 accelgyro;

int16_t ax, ay, az;
int16_t gx, gy, gz;

#define LED_PIN 13
bool blinkState = false;

void setup() {
// join I2C bus (I2Cdev library doesn't do this automatically)
Wire.begin();

// initialize serial communication
// (38400 chosen because it works as well at 8MHz as it does at 16MHz, but
// it's really up to you depending on your project)
Serial.begin(230400);

// initialize device
Serial.println("Initializing I2C devices...");
accelgyro.initialize();

// verify connection
Serial.println("Testing device connections...");
Serial.println(accelgyro.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed");

// configure Arduino LED for
pinMode(LED_PIN, OUTPUT);
}

void loop() {
// read raw accel/gyro measurements from device
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);

// these methods (and a few others) are also available
//accelgyro.getAcceleration(&ax, &ay, &az);
//accelgyro.getRotation(&gx, &gy, &gz);

// display tab-separated accel/gyro x/y/z values
Serial.print("a/g:\t");
Serial.print(ax);
Serial.print("\t");
Serial.print(ay);
Serial.print("\t");
Serial.print(az);
Serial.print("\t");
Serial.print(gx);
Serial.print("\t");
Serial.print(gy);
Serial.print("\t");
Serial.println(gz);

// blink LED to indicate activity
blinkState = !blinkState;
digitalWrite(LED_PIN, blinkState);
}

我歌月徘徊666 发表于 2015-11-24 21:54:22

刚用6050还不是很理解

zoologist 发表于 2015-11-24 22:18:11

有限组的数据是啥意思?

跑着跑着停了?

c_bowie 发表于 2015-11-28 17:07:21

zoologist 发表于 2015-11-24 22:18 static/image/common/back.gif
有限组的数据是啥意思?

跑着跑着停了?

是的,:dizzy:

zoologist 发表于 2015-11-28 20:15:53

我注意到你设置串口比较特别
Serial.begin(230400);

你有没有试试115200 这样标准的?

c_bowie 发表于 2015-11-28 23:28:33

zoologist 发表于 2015-11-28 20:15 static/image/common/back.gif
我注意到你设置串口比较特别
Serial.begin(230400);



没有欸,下次去实验室试试,谢谢了

c_bowie 发表于 2015-12-8 10:41:34

zoologist 发表于 2015-11-28 20:15 static/image/common/back.gif
我注意到你设置串口比较特别
Serial.begin(230400);



我试过了,各个波特率,好像没什么区别:(

zoologist 发表于 2015-12-8 15:46:12

c_bowie 发表于 2015-12-8 10:41 static/image/common/back.gif
我试过了,各个波特率,好像没什么区别

那你就试试直接输出随机数看看会不会停吧

其他的都不要变

c_bowie 发表于 2015-12-15 10:09:35

本帖最后由 c_bowie 于 2015-12-15 10:10 编辑

zoologist 发表于 2015-12-8 15:46 static/image/common/back.gif
那你就试试直接输出随机数看看会不会停吧

其他的都不要变

感谢您耐心回复,我做了测试,在loop循环里面只有把accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);给注释掉才能不停地输出,否则只会进行有限组的loop循环。

zoologist 发表于 2015-12-15 11:16:09

c_bowie 发表于 2015-12-15 10:09 static/image/common/back.gif
感谢您耐心回复,我做了测试,在loop循环里面只有把accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &g ...

内存溢出?库函数有问题?

c_bowie 发表于 2015-12-15 11:19:40

zoologist 发表于 2015-12-15 11:16 static/image/common/back.gif
内存溢出?库函数有问题?

是啊,感觉可能是由于库文件与6050不匹配

健南good 发表于 2016-4-27 12:05:06

楼主,你的传感器和mega的那些引脚相连接的啊。我也在做,求教啊!
页: [1]
查看完整版本: 关于MPU6050与Mega配合使用的问题