Skip to content

Commit 28b77c6

Browse files
committed
Make acceleration a property, switch to m / s ^ 2 and update to write and read_into.
1 parent 5b05f75 commit 28b77c6

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

adafruit_lis3dh/lis3dh.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@
55
# License: MIT License (https://en.wikipedia.org/wiki/MIT_License)
66
import 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:
1311
REG_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):
204203
class 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

225225
class 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

Comments
 (0)