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.
Diff: LSM303D.cpp
- Revision:
- 3:50ff4ad71082
- Parent:
- 2:8cd0c3c11b48
diff -r 8cd0c3c11b48 -r 50ff4ad71082 LSM303D.cpp
--- a/LSM303D.cpp Mon Feb 08 17:57:22 2016 +0000
+++ b/LSM303D.cpp Tue Sep 08 06:34:37 2020 +0000
@@ -37,7 +37,6 @@
#include "mbed.h"
#include "LSM303D.h"
-
const int addr_acc_mag = 0x3A;
enum REG_ADDRS {
@@ -84,7 +83,6 @@
_LSM303(sda, scl)
{
char reg_v;
- _LSM303.frequency(200000);
reg_v = 0;
@@ -94,7 +92,7 @@
/* -- mag --- */
reg_v = 0;
- reg_v |= 0x78; //M_RES = 11 (high resolution mode); M_ODR = 100 (50 Hz ODR)
+ reg_v |= 0x74; //M_RES = 11 (high resolution mode); M_ODR = 100 (50 Hz ODR)
write_reg(addr_acc_mag,CTRL5,reg_v);
@@ -102,20 +100,24 @@
reg_v = 0;
reg_v |= 0x00; //continuous mag
write_reg(addr_acc_mag,CTRL7,reg_v);
+
+ reg_v = 0;
+ reg_v |= 0x00; //+-2gauss
+ write_reg(addr_acc_mag,CTRL6,reg_v);
}
-bool LSM303D::read(float *ax, float *ay, float *az, float *mx, float *my, float *mz) {
+bool LSM303D::read(float *aData,float *mData) {
char acc[6], mag[6];
if (recv(addr_acc_mag, OUT_X_A, acc, 6) && recv(addr_acc_mag, OUT_X_M, mag, 6)) {
- *ax = float(short(acc[1] << 8 | acc[0]))*0.061; //32768/4=8192
- *ay = float(short(acc[3] << 8 | acc[2]))*0.061;
- *az = float(short(acc[5] << 8 | acc[4]))*0.061;
- //+-4gauss
- *mx = float(short(mag[0] << 8 | mag[1]))*0.16;
- *mz = float(short(mag[2] << 8 | mag[3]))*0.16;
- *my = float(short(mag[4] << 8 | mag[5]))*0.16;
+ aData[0] = float(short(acc[1] << 8 | acc[0]))*0.061; //32768/4=8192
+ aData[1] = float(short(acc[3] << 8 | acc[2]))*0.061;
+ aData[2] = float(short(acc[5] << 8 | acc[4]))*0.061;
+ //+-2gauss
+ mData[0] = float(short(mag[1] << 8 | mag[0]))*0.08;
+ mData[1] = float(short(mag[3] << 8 | mag[2]))*0.08;
+ mData[2] = float(short(mag[5] << 8 | mag[4]))*0.08;
return true;
}