summaryrefslogtreecommitdiffstats
path: root/sensors/accelerometer/adxl345.vala
diff options
context:
space:
mode:
Diffstat (limited to 'sensors/accelerometer/adxl345.vala')
-rw-r--r--sensors/accelerometer/adxl345.vala11
1 files changed, 7 insertions, 4 deletions
diff --git a/sensors/accelerometer/adxl345.vala b/sensors/accelerometer/adxl345.vala
index 9c2c58c..3cc8be7 100644
--- a/sensors/accelerometer/adxl345.vala
+++ b/sensors/accelerometer/adxl345.vala
@@ -14,6 +14,9 @@
*/
public class ADXL345 : I2CDevice, Accelerometer {
+ /* ADXL345 3.9mG per LSB */
+ private static const double scale_factor = (3.9 / 1000.0);
+
public ADXL345(uint8 dev, uint8 addr = 0x53) throws I2CError {
setup(dev, addr);
devsetup();
@@ -56,11 +59,11 @@ public class ADXL345 : I2CDevice, Accelerometer {
set_byte(0x20, z);
}
- public void get_data(out int16 x, out int16 y, out int16 z) throws I2CError {
+ public void get_data(out double x, out double y, out double z) throws I2CError {
var data = get_block(0x32, 6);
- x = data[0] | data[1] << 8;
- y = data[2] | data[3] << 8;
- z = data[4] | data[5] << 8;
+ x = (data[0] | data[1] << 8) * scale_factor;
+ y = (data[2] | data[3] << 8) * scale_factor;
+ z = (data[4] | data[5] << 8) * scale_factor;
}
}