@@ -51,6 +51,10 @@ def __init__(self, i2c, address=ISM330DL_I2C_DEFAULT_ADDR):
5151 self ._gyro_scale = GYRO_FS_250DPS
5252 self ._gyro_odr = GYRO_ODR_104HZ
5353
54+ self ._accel_offset_x = 0.0
55+ self ._accel_offset_y = 0.0
56+ self ._accel_offset_z = 0.0
57+
5458 self ._temp_gain = 1.0
5559 self ._temp_offset = 0.0
5660
@@ -200,7 +204,27 @@ def temperature_raw(self):
200204 def acceleration_g (self ):
201205 sens = ACCEL_SENSITIVITY_MG [self ._accel_scale ]
202206 raw = self .acceleration_raw ()
203- return tuple ((v * sens ) / 1000.0 for v in raw )
207+ values = tuple ((v * sens ) / 1000.0 for v in raw )
208+
209+ return (
210+ values [0 ] - self ._accel_offset_x ,
211+ values [1 ] - self ._accel_offset_y ,
212+ values [2 ] - self ._accel_offset_z ,
213+ )
214+
215+ def set_accel_offset (self , ox = 0.0 , oy = 0.0 , oz = 0.0 ):
216+ """Set accelerometer bias offsets in g."""
217+ self ._accel_offset_x = float (ox )
218+ self ._accel_offset_y = float (oy )
219+ self ._accel_offset_z = float (oz )
220+
221+ def get_accel_offset (self ):
222+ """Return accelerometer bias offsets in g."""
223+ return (
224+ self ._accel_offset_x ,
225+ self ._accel_offset_y ,
226+ self ._accel_offset_z ,
227+ )
204228
205229 def acceleration_ms2 (self ):
206230 g = self .acceleration_g ()
0 commit comments