Skip to content

Commit 1a5fb36

Browse files
committed
Fixed LSM6DS3 to LSM6DS3TR-C
This chip has slightly different registers.
1 parent ccfea10 commit 1a5fb36

File tree

2 files changed

+36
-8
lines changed

2 files changed

+36
-8
lines changed

adafruit_lsm6ds/lsm6ds3.py renamed to adafruit_lsm6ds/lsm6ds3trc.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,36 +2,37 @@
22
#
33
# SPDX-License-Identifier: MIT
44
"""
5-
This module provides the `adafruit_lsm6ds.lsm6ds3` subclass of LSM6DS sensors
5+
This module provides the `adafruit_lsm6ds.lsm6ds3trc` subclass of LSM6DS sensors
66
===============================================================================
77
"""
8-
from . import LSM6DS
8+
from . import LSM6DS, RWBit, const
99

10+
_LSM6DS_CTRL10_C = const(0x19)
1011

11-
class LSM6DS3(LSM6DS): # pylint: disable=too-many-instance-attributes
12+
class LSM6DS3TRC(LSM6DS): # pylint: disable=too-many-instance-attributes
1213

13-
"""Driver for the LSM6DS3 6-axis accelerometer and gyroscope.
14+
"""Driver for the LSM6DS3TR-C 6-axis accelerometer and gyroscope.
1415
15-
:param ~busio.I2C i2c_bus: The I2C bus the LSM6DS3 is connected to.
16+
:param ~busio.I2C i2c_bus: The I2C bus the LSM6DS3TR-C is connected to.
1617
:param int address: The I2C device address. Defaults to :const:`0x6A`
1718
1819
1920
**Quickstart: Importing and using the device**
2021
21-
Here is an example of using the :class:`LSM6DS3` class.
22+
Here is an example of using the :class:`LSM6DS3TRC` class.
2223
First you will need to import the libraries to use the sensor
2324
2425
.. code-block:: python
2526
2627
import board
27-
from adafruit_lsm6ds.lsm6ds3 import LSM6DS3
28+
from adafruit_lsm6ds.lsm6ds3trc import LSM6DS3TRC
2829
2930
Once this is done you can define your `board.I2C` object and define your sensor object
3031
3132
.. code-block:: python
3233
3334
i2c = board.I2C() # uses board.SCL and board.SDA
34-
sensor = LSM6DS3(i2c)
35+
sensor = LSM6DS3TRC(i2c)
3536
3637
Now you have access to the :attr:`acceleration` and :attr:`gyro`: attributes
3738
@@ -43,3 +44,7 @@ class LSM6DS3(LSM6DS): # pylint: disable=too-many-instance-attributes
4344
"""
4445

4546
CHIP_ID = 0x6A
47+
48+
# This version of the IMU has a different register for enabling the pedometer
49+
# https://www.st.com/resource/en/datasheet/lsm6ds3tr-c.pdf
50+
_ped_enable = RWBit(_LSM6DS_CTRL10_C, 4)
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# SPDX-FileCopyrightText: Copyright (c) 2020 Bryan Siepert for Adafruit Industries
2+
#
3+
# SPDX-License-Identifier: MIT
4+
import time
5+
import board
6+
import digitalio
7+
import busio
8+
from adafruit_lsm6ds.lsm6ds3trc import LSM6DS3TRC
9+
10+
# On the Seeed XIAO nRF52840 Sense the LSM6DS3TR-C IMU is connected on a separate
11+
# I2C bus and it has its own power pin that we need to enable.
12+
imupwr = digitalio.DigitalInOut(board.IMU_PWR)
13+
imupwr.direction = digitalio.Direction.OUTPUT
14+
imupwr.value = True
15+
16+
imu_i2c = busio.I2C(board.IMU_SCL, board.IMU_SDA)
17+
sensor = LSM6DS3TRC(imu_i2c)
18+
19+
while True:
20+
print("Acceleration: X:%.2f, Y: %.2f, Z: %.2f m/s^2" % (sensor.acceleration))
21+
print("Gyro X:%.2f, Y: %.2f, Z: %.2f radians/s" % (sensor.gyro))
22+
print("")
23+
time.sleep(0.5)

0 commit comments

Comments
 (0)