I have my mpu6050 (GY-521) connected to Arduino uno and run S function perfectly but now i want to use two sensors at the same time.
After wiring both mpu6050s i can change the library in S function to read 0x68 or 0x69 and respected sensor will send data to simulink but i can't get both of them at the same time
I tried copying the S function for the other sensor and change the library (one of them is 0x68 and the other is 0x69) and run it, but i get some errors.
Then I tried to change outputs in S function to read both sensor data simultaneously but i again get error messages.
Has somebody done it?
How can i solve it?
my S function is like this:
libraries:
#ifndef MATLAB_MEX_FILE#define ARDUINO 100#include <Arduino.h>#include <Wire.h>#include <Wire.cpp>#include <twi.h>#include <twi.c>#define MPU 0x68#endif
Outputs:
#ifndef MATLAB_MEX_FILEWire.beginTransmission(MPU);Wire.write(0x3B);Wire.endTransmission(false);Wire.requestFrom(MPU, 14, true);int raw = Wire.read() << 8;raw = raw | Wire.read();ax[0] = (float)raw / 2048.0f;raw = Wire.read() << 8;raw = raw | Wire.read();ay[0] = (float)raw / 2048.0f;raw = Wire.read() << 8;raw = raw | Wire.read();az[0] = (float)raw / 2048.0f;raw = Wire.read() << 8;raw = raw | Wire.read();temp[0] = (float)raw / 340.0f + 36.53f;raw = Wire.read() << 8;raw = raw | Wire.read();gx[0] = (float)raw / 131.0f;raw = Wire.read() << 8;raw = raw | Wire.read();gy[0] = (float)raw / 131.0f;raw = Wire.read() << 8;raw = raw | Wire.read();gz[0] = (float)raw / 131.0f;#endif
Update:
#ifndef MATLAB_MEX_FILEif (xD[0] != 1) { Wire.begin(); /* Do not sleep */ Wire.beginTransmission(MPU); Wire.write(0x6B); Wire.write(0); Wire.endTransmission(true); /* Gyroscope full scale range: 250 degs/s */ Wire.beginTransmission(MPU); Wire.write(0x1B); Wire.write(0); Wire.endTransmission(true); /* Accelerometer full scale range: 4g */ Wire.beginTransmission(MPU); Wire.write(0x1C);Wire.endTransmission();Wire.requestFrom(MPU, 1);byte x = Wire.read(); //the value of Register-28 is in xx = x | 0b00011000; //appending values of Bit4 and Bit3Wire.beginTransmission(MPU);Wire.write(0x1C); //pointing Register-28Wire.write(x); //value for Register-28; Full-scale range is now +/- 16gWire.endTransmission(); xD[0] = 1;}#endif
this is my folder with all files inside that for one sensor works fine:
i just want to use it for both sensors
btw my wiring is fine (i think) beacuse i tested it with arduino IDE and it is ok. also i can read data with simulink when im just using one of them :
these two pictures below did not work for me. i tried to change the code in libraries, output and update, but i couldnt get it working:
Best Answer