diff options
Diffstat (limited to 'sensors/accelerometer/adxl345.vala')
-rw-r--r-- | sensors/accelerometer/adxl345.vala | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/sensors/accelerometer/adxl345.vala b/sensors/accelerometer/adxl345.vala index 3cc8be7..a90e792 100644 --- a/sensors/accelerometer/adxl345.vala +++ b/sensors/accelerometer/adxl345.vala @@ -14,8 +14,8 @@ */ public class ADXL345 : I2CDevice, Accelerometer { - /* ADXL345 3.9mG per LSB */ - private static const double scale_factor = (3.9 / 1000.0); + private static const double MG_PER_LSB = 3.9; + private static const double MG_PER_G = 1000.0; public ADXL345(uint8 dev, uint8 addr = 0x53) throws I2CError { setup(dev, addr); @@ -61,9 +61,9 @@ public class ADXL345 : I2CDevice, Accelerometer { 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) * scale_factor; - y = (data[2] | data[3] << 8) * scale_factor; - z = (data[4] | data[5] << 8) * scale_factor; + x = ((int16) (data[0] | data[1] << 8) * MG_PER_LSB) / MG_PER_G; + y = ((int16) (data[2] | data[3] << 8) * MG_PER_LSB) / MG_PER_G; + z = ((int16) (data[4] | data[5] << 8) * MG_PER_LSB) / MG_PER_G; } } |