Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of HMC5883L by
Revision 3:f5f6aaf24be0, committed 2017-06-04
- Comitter:
- roger_wee
- Date:
- Sun Jun 04 06:19:54 2017 +0000
- Parent:
- 2:bbc9ad18fd3e
- Commit message:
- changed magnetometer values from microtesla to milligauss; passed through madgwick's filter to compute yaw, pitch, & roll
Changed in this revision
HMC5883L.cpp | Show annotated file Show diff for this revision Revisions of this file |
HMC5883L.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r bbc9ad18fd3e -r f5f6aaf24be0 HMC5883L.cpp --- a/HMC5883L.cpp Wed Aug 05 13:16:12 2015 +0000 +++ b/HMC5883L.cpp Sun Jun 04 06:19:54 2017 +0000 @@ -103,6 +103,7 @@ void HMC5883L::init() { + i2c.frequency(400000); // use fast (400 kHz) I2C writeByte(HMC5883L_ADDRESS, CONFIG_A, 0x78); // Number of samples averaged: 8, Data output rate: 75 Hz writeByte(HMC5883L_ADDRESS, MODE, 0x00); // Continuous-Measurement Mode setMagGain(MagGain_13); @@ -121,10 +122,11 @@ dest[2] = (int16_t)(((int16_t)rawData[2]<<8) | rawData[3]); // MAG_ZOUT dest[1] = (int16_t)(((int16_t)rawData[4]<<8) | rawData[5]); // MAG_YOUT + float mRes = 0.73; /* Convert raw data to magnetic field values in microtesla */ - dest[0] = dest[0] / Gauss_LSB_XY * GAUSS_TO_MICROTESLA; - dest[1] = dest[1] / Gauss_LSB_XY * GAUSS_TO_MICROTESLA; - dest[2] = dest[2] / Gauss_LSB_Z * GAUSS_TO_MICROTESLA; + dest[0] = dest[0] * mRes; // / Gauss_LSB_XY * GAUSS_TO_MICROTESLA; + dest[1] = dest[1] * mRes; // / Gauss_LSB_XY * GAUSS_TO_MICROTESLA; + dest[2] = dest[2] * mRes; // / Gauss_LSB_Z * GAUSS_TO_MICROTESLA; } double HMC5883L::getHeading() @@ -138,7 +140,7 @@ // After calculating heading declination angle should be added to heading which is the error of the magnetic field in specific location. // declinationAngle can be found here http://www.magnetic-declination.com/ // For Ankara (my location) declinationAngle is ~5.5 degrees (0.096 radians) - float declinationAngle = 0.096; + float declinationAngle = 0.022; heading += declinationAngle; // Correct for when signs are reversed.
diff -r bbc9ad18fd3e -r f5f6aaf24be0 HMC5883L.h --- a/HMC5883L.h Wed Aug 05 13:16:12 2015 +0000 +++ b/HMC5883L.h Sun Jun 04 06:19:54 2017 +0000 @@ -28,7 +28,6 @@ #include "mbed.h" #include "math.h" -#include "ledControl.h" #define PI 3.14159265359 #define GAUSS_TO_MICROTESLA 100