Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过I2C将四个MPU-6050与Arduino连接_Arduino_Accelerometer_I2c - Fatal编程技术网

通过I2C将四个MPU-6050与Arduino连接

通过I2C将四个MPU-6050与Arduino连接,arduino,accelerometer,i2c,Arduino,Accelerometer,I2c,我有四个MPU-6050()IMU通过两条I2C总线连接到我的Arduino Due 我只想读取加速计数据,但我简单读取原始数据的代码似乎不起作用。有人知道什么地方可能出错吗 下面是我如何将四个MPU-6050连接到Arduino的图片: 这是我的密码: // Arduino Wire library is required if I2Cdev I2CDEV_ARDUINO_WIRE implementation // is used in I2Cdev.h #include "Wire.h"

我有四个MPU-6050()IMU通过两条I2C总线连接到我的Arduino Due

我只想读取加速计数据,但我简单读取原始数据的代码似乎不起作用。有人知道什么地方可能出错吗

下面是我如何将四个MPU-6050连接到Arduino的图片:

这是我的密码:

// 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 accel_i2c_68(MPU6050_ADDRESS_AD0_LOW);
MPU6050 accel_i2c_69(MPU6050_ADDRESS_AD0_HIGH);
MPU6050 accel_i2c1_68(MPU6050_ADDRESS_AD0_LOW);
MPU6050 accel_i2c1_69(MPU6050_ADDRESS_AD0_HIGH);

// Declare 12 acceleration vars, 3 for each of the four IMU's
int16_t ax68, ay68, az68, ax69, ay69, az69, ax68_1, ay68_1, az68_1, ax69_1, ay69_1, az69_1;

#define LED_PIN 13
bool blinkState = false;

void setup() {
    // join both I2C bus on Arduino Due
    Wire.begin();
    Wire1.begin();

    // initialize serial communication
    Serial.begin(9600);

    // initialize four IMU devices
    Serial.println("Initializing I2C devices...");
    accel_i2c_68.initialize();
    accel_i2c_68.setFullScaleAccelRange(MPU6050_ACCEL_FS_16);

    accel_i2c_69.initialize();
    accel_i2c_69.setFullScaleAccelRange(MPU6050_ACCEL_FS_16);

    accel_i2c1_68.initialize();
    accel_i2c1_68.setFullScaleAccelRange(MPU6050_ACCEL_FS_16);

    accel_i2c1_69.initialize();
    accel_i2c1_69.setFullScaleAccelRange(MPU6050_ACCEL_FS_16);

    // verify connection of all four IMU's
    Serial.println("Testing device connections...");
    Serial.println(accel_i2c_68.testConnection() ? "MPU6050 68 connection successful" : "MPU6050 68 connection failed");
    Serial.println(accel_i2c_69.testConnection() ? "MPU6050 69 connection successful" : "MPU6050 69 connection failed");
    Serial.println(accel_i2c1_68.testConnection() ? "MPU6050 1 68 connection successful" : "MPU6050 1 68 connection failed");
    Serial.println(accel_i2c1_69.testConnection() ? "MPU6050 1 69 connection successful" : "MPU6050 1 69 connection failed");

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

void loop() {

    // read only acceleration raw data from all four IMU's
    accel_i2c_68.getAcceleration(&ax68, &ay68, &az68);
    accel_i2c_69.getAcceleration(&ax69, &ay69, &az69);
    accel_i2c1_68.getAcceleration(&ax68_1, &ay68_1, &az68_1);
    accel_i2c1_69.getAcceleration(&ax69_1, &ay69_1, &az69_1);

    // display tab-separated accel x/y/z values, divide by 2048.0 to get g-force values
    Serial.print("a:\t");
    Serial.print(ax68/2048.0); Serial.print("\t");
    Serial.print(ay68/2048.0); Serial.print("\t");
    Serial.print(az68/2048.0); Serial.print("\t");
    Serial.print(ax69/2048.0); Serial.print("\t");
    Serial.print(ay69/2048.0); Serial.print("\t");
    Serial.print(az69/2048.0); Serial.print("\t");
    Serial.print(ax68_1/2048.0); Serial.print("\t");
    Serial.print(ay68_1/2048.0); Serial.print("\t");
    Serial.print(az68_1/2048.0); Serial.print("\t");
    Serial.print(ax69_1/2048.0); Serial.print("\t");
    Serial.print(ay69_1/2048.0); Serial.print("\t");
    Serial.println(az69_1/2048.0);

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

这是相当古老的,可能不再相关,无论如何,我来这里寻找其他东西,但只是看看你的代码,我看到你没有告诉
MPU6050加速器i2c。。。应使用i2c总线的对象。如果您的库实际上支持多条i2c总线,请查看它的文档。

链接页面上描述的关于10+个传感器的技巧意味着它们都在同一条总线上。