55# License: MIT License (https://en.wikipedia.org/wiki/MIT_License)
66import ustruct
77
8- import adafruit_bus_device .i2c_device as i2c_device
9- import adafruit_bus_device .spi_device as spi_device
10-
8+ from micropython import const
119
1210# Register addresses:
1311REG_OUTADC1_L = const (0x08 )
@@ -92,9 +90,10 @@ def range(self, range_value):
9290 ctl4 |= range_value << 4
9391 self ._write_register_byte (REG_CTRL4 , ctl4 )
9492
95- def read_accel_g (self ):
93+ @property
94+ def acceleration (self ):
9695 """Read the x, y, z acceleration values. These values are returned in
97- a 3-tuple and are in gravities (G) .
96+ a 3-tuple and are in m / s ^ 2 .
9897 """
9998 data = self ._read_register (REG_OUT_X_L | 0x80 , 6 )
10099 x = ustruct .unpack ('<h' , data [0 :2 ])[0 ]
@@ -110,7 +109,7 @@ def read_accel_g(self):
110109 divider = 8190
111110 elif accel_range == RANGE_2_G :
112111 divider = 16380
113- return (x / divider , y / divider , z / divider )
112+ return (x / divider * 9.806 , y / divider * 9.806 , z / divider * 9.806 )
114113
115114 def read_adc_raw (self , adc ):
116115 """Retrieve the raw analog to digital converter value. ADC must be a
@@ -204,27 +203,29 @@ def _write_register_byte(self, register, value):
204203class LIS3DH_I2C (LIS3DH ):
205204
206205 def __init__ (self , i2c , address = 0x18 ):
206+ import adafruit_bus_device .i2c_device as i2c_device
207207 self ._i2c = i2c_device .I2CDevice (i2c , address )
208208 self ._buffer = bytearray (6 )
209209 super ().__init__ ()
210210
211211 def _read_register (self , register , length ):
212212 self ._buffer [0 ] = register & 0xFF
213213 with self ._i2c as i2c :
214- i2c .writeto (self ._buffer , start = 0 , end = 1 )
215- i2c .readfrom_into (self ._buffer , start = 0 , end = length )
214+ i2c .write (self ._buffer , start = 0 , end = 1 )
215+ i2c .read_into (self ._buffer , start = 0 , end = length )
216216 return self ._buffer
217217
218218 def _write_register_byte (self , register , value ):
219219 self ._buffer [0 ] = register & 0xFF
220220 self ._buffer [1 ] = value & 0xFF
221221 with self ._i2c as i2c :
222- i2c .writeto (self ._buffer , start = 0 , end = 2 )
222+ i2c .write (self ._buffer , start = 0 , end = 2 )
223223
224224
225225class LIS3DH_SPI (LIS3DH ):
226226
227227 def __init__ (self , spi , cs , baudrate = 100000 ):
228+ import adafruit_bus_device .spi_device as spi_device
228229 self ._spi = spi_device .SPIDevice (spi , cs , baudrate = baudrate )
229230 self ._buffer = bytearray (6 )
230231 super ().__init__ ()
0 commit comments