i'm trying connect 3 mpu9150 sensors arduino using i2c, can't working. single mpu9150 without multiplexer works well. multiplexer use cd4067be. resistors 2.2k.

a larger image attached.
since can imagine made mistake (i'm not @ electronics), chose ask question here. did wrong? wrong multiplexer maybe? wrong wiring? may programming mistake, it's first attempt write arduino, there isn't wrong. don't try read 2nd , 3rd sensors. attempt test connection first 1 results in "mpu6050 connection failed".
a larger image attached.
since can imagine made mistake (i'm not @ electronics), chose ask question here. did wrong? wrong multiplexer maybe? wrong wiring? may programming mistake, it's first attempt write arduino, there isn't wrong. don't try read 2nd , 3rd sensors. attempt test connection first 1 results in "mpu6050 connection failed".
code: [select]
#include "wire.h"
#include "i2cdev.h"
#include "mpu6050.h"
mpu6050 accelgyro;
int en = 12;
int ma = 8;
int mb = 9;
int mc = 10;
int md = 11;
int mux_id = 0;
int16_t ax, ay, az;
int16_t gx, gy, gz;
int16_t mx, my, mz;
void mux(int n) {
serial.print("mux: "); serial.print(n); serial.println(".");
digitalwrite(en, low);
if(n%2==1) {
digitalwrite(ma, high);
serial.print(1);
} else {
digitalwrite(ma, low);
serial.print(0);
}
if(n%4>1) {
digitalwrite(mb, high);
serial.print(1);
} else {
digitalwrite(mb, low);
serial.print(0);
}
if(n%8>3) {
digitalwrite(mc, high);
serial.print(1);
} else {
digitalwrite(mc, low);
serial.print(0);
}
if(n>7) {
digitalwrite(md, high);
serial.print(1);
} else {
digitalwrite(md, low);
serial.print(0);
}
serial.println("");
}
void setup() {
pinmode(en, output);
pinmode(ma, output);
pinmode(mb, output);
pinmode(mc, output);
pinmode(md, output);
mux(0);
wire.begin();
serial.begin(38400);
serial.println("initializing i2c devices...");
accelgyro.initialize();
// verify connection
serial.println("testing device connections...");
serial.println(accelgyro.testconnection() ? "mpu6050 connection successful" : "mpu6050 connection failed");
delay(2000);
}
void loop() {
// read raw accel/gyro measurements device
accelgyro.getmotion9(&ax, &ay, &az, &gx, &gy, &gz, &mx, &my, &mz);
// display accel/gyro x/y/z values
serial.print("(");
serial.print(ax); serial.print(",");
serial.print(ay); serial.print(",");
serial.print(az); serial.print(",");
serial.print(gx); serial.print(",");
serial.print(gy); serial.print(",");
serial.print(gz); serial.print(",");
serial.print(mx); serial.print(",");
serial.print(my); serial.print(",");
serial.print(mz);
serial.println("");
//mux_id = (mux_id + 1)%3;
//mux(mux_id);
}
resolved multiplexing ad0 instead of scl.
Arduino Forum > Using Arduino > LEDs and Multiplexing > Multiplexing MPU9150s (i2c)
arduino
Comments
Post a Comment