This code will read the data from the X,Y and Z axis of the MLX90393 Magnetometer and display it on a serial monitor. Remember to check the solder links on the I2C lines on your Nucleo as this can interfere on certain boards.
Revision 0:61c51438425a, committed 2018-11-21
- Comitter:
- Angath
- Date:
- Wed Nov 21 22:27:05 2018 +0000
- Commit message:
- Working code to read the data from the X,Y and Z axis of the MLX90393
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Nov 21 22:27:05 2018 +0000 @@ -0,0 +1,58 @@ +#include "mbed.h" + +int addr = 0x0C <<1; // 8bit I2C address + +I2C i2c(PB_9 , PB_8); //sda, scl + +Serial pc(PA_2, PA_3); //Tx/Rx + +int main() +{ + char config [4]; + char data[7] = {0}; + + config[0] = 0x60; + config[1] = 0x00; + config[2] = 0x5C; + config[3] = 0x00; + + i2c.write(addr, config, 4, false); + + i2c.read(addr, data, 1); + + config[0] = 0x60; + config[1] = 0x02; + config[2] = 0xB4; + config[3] = 0x02; + + i2c.write(addr, config, 4, false); + + i2c.read(addr, data, 1); + + wait(0.25); + + while (1) { + + config[0] = 0x3E; // Single measurement mode, ZYX enabled + + i2c.write(addr, config, 1, false); + i2c.read(addr, data, 1); + + wait(0.1); + + config[0] = 0x4E; + + i2c.write(addr, config, 1, false); // Read command, followed by ZYX bits set + i2c.read(addr, data, 7); + + int xMag = ((data[1] * 256) + data[2]); + int yMag = ((data[3] * 256) + data[4]); + int zMag = ((data[5] * 256) + data[6]); + + printf("X Axis = %d \n", xMag); + printf("Y Axis = %d \n", yMag); + printf("Z Axis = %d \n", zMag); + + wait(5); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Wed Nov 21 22:27:05 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/e95d10626187 \ No newline at end of file