Abdun Nafay
Pakistan
Asked
— Edited
Resolved by DJ Sures!
I recently bought this IMU (inertial measurement unit): http://www.amazon.com/Kootek%C2%AE-Arduino-MPU-6050-gyroscope-accelerometer/dp/B008BOPN40#productDetails
Now I want to read the values from the i2c port in C#.
Please advice.
Thanks!
another link of the sensor that might be helpful: http://playground.arduino.cc/Main/MPU-6050
You'll need to look at the datasheet to find out the correct address of the sensor and the commands to send to the sensor in order to read from it. The first thing to do is get that data sheet. Do you have the datasheet?
As for the C# code, I cannot help you there as I don't know C, there may be an example in the SDK example files though, in which case just substitute the example I2C device info for that of the sensor you want to use.
yes, here it isPS-MPU-6000A-00v3.4.pdf
RegisterMapandDescriptions.pdf
Here is an example of getting i2c response from the BlinkM...
I still am a bit confused! The imu that I have, I want to read the data that it gives and since it is 6dof, should it return 6 bytes? and I did this sort of a thing, let me know if I did it correct:
byte[] ret = ezB_Connect1.EZB.I2C.Read(EZ_B.I2C.ReadArgsEnum.Auto, 0x68, 6);
Also, I need to know which address to read from.
you would need to first tell the device that you wish to receive data before you can Read data.
Notice in my example that the first line requests data, and the second line reads the data.
@Rich i am stuck with the register descriptions, if you can help me out with it.
Sorry but I don't have the time to read the datasheet at the moment. The datasheet should tell you everything you need to know, if it doesn't you could try contacting the manufacturer and asking for their assistance - all manufacturers I've been in contact with have been very helpful to be honest.
and @DJ Sures this is what this guy has done in C:
www.botched.co.uk/pic-tutorials/mpu6050-setup-data-aquisition/
I translated the MPU6050_Test_I2C() method in the following way:
byte[] ret = ezB_Connect1.EZB.I2C.Read(EZ_B.I2C.ReadArgsEnum.Auto, 0x75, 1);
Since 0x75 is the read only register which returns 0x68. But I am getting 0xff! any help?
@Rich have a look at the link I have posted above. Maybe that would be time saving. and thanks for the help!
and @DJ in the latest SDK, the I2C.Start() and I2C.Stop() methods aren't available, so is that the reason that I am not being able to retrieve values?
thanks everyone, now I did it finally!
thanks everyone, now I did it finally! Smile