Skip to content

Commit

Permalink
Merge pull request #50 from myllyja/fix-lsm6ds3trc
Browse files Browse the repository at this point in the history
Fixed LSM6DS3 to LSM6DS3TR-C
  • Loading branch information
ladyada committed Feb 25, 2022
2 parents ccfea10 + 5897882 commit 7261e46
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 8 deletions.
22 changes: 14 additions & 8 deletions adafruit_lsm6ds/lsm6ds3.py → adafruit_lsm6ds/lsm6ds3trc.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,36 +2,38 @@
#
# SPDX-License-Identifier: MIT
"""
This module provides the `adafruit_lsm6ds.lsm6ds3` subclass of LSM6DS sensors
This module provides the `adafruit_lsm6ds.lsm6ds3trc` subclass of LSM6DS sensors
===============================================================================
"""
from . import LSM6DS
from . import LSM6DS, RWBit, const

_LSM6DS_CTRL10_C = const(0x19)

class LSM6DS3(LSM6DS): # pylint: disable=too-many-instance-attributes

"""Driver for the LSM6DS3 6-axis accelerometer and gyroscope.
class LSM6DS3TRC(LSM6DS): # pylint: disable=too-many-instance-attributes

:param ~busio.I2C i2c_bus: The I2C bus the LSM6DS3 is connected to.
"""Driver for the LSM6DS3TR-C 6-axis accelerometer and gyroscope.
:param ~busio.I2C i2c_bus: The I2C bus the LSM6DS3TR-C is connected to.
:param int address: The I2C device address. Defaults to :const:`0x6A`
**Quickstart: Importing and using the device**
Here is an example of using the :class:`LSM6DS3` class.
Here is an example of using the :class:`LSM6DS3TRC` class.
First you will need to import the libraries to use the sensor
.. code-block:: python
import board
from adafruit_lsm6ds.lsm6ds3 import LSM6DS3
from adafruit_lsm6ds.lsm6ds3trc import LSM6DS3TRC
Once this is done you can define your `board.I2C` object and define your sensor object
.. code-block:: python
i2c = board.I2C() # uses board.SCL and board.SDA
sensor = LSM6DS3(i2c)
sensor = LSM6DS3TRC(i2c)
Now you have access to the :attr:`acceleration` and :attr:`gyro`: attributes
Expand All @@ -43,3 +45,7 @@ class LSM6DS3(LSM6DS): # pylint: disable=too-many-instance-attributes
"""

CHIP_ID = 0x6A

# This version of the IMU has a different register for enabling the pedometer
# https://www.st.com/resource/en/datasheet/lsm6ds3tr-c.pdf
_ped_enable = RWBit(_LSM6DS_CTRL10_C, 4)
23 changes: 23 additions & 0 deletions examples/lsm6ds_lsm6ds3trc_simpletest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# SPDX-FileCopyrightText: Copyright (c) 2020 Bryan Siepert for Adafruit Industries
#
# SPDX-License-Identifier: MIT
import time
import board
import digitalio
import busio
from adafruit_lsm6ds.lsm6ds3trc import LSM6DS3TRC

# On the Seeed XIAO nRF52840 Sense the LSM6DS3TR-C IMU is connected on a separate
# I2C bus and it has its own power pin that we need to enable.
imupwr = digitalio.DigitalInOut(board.IMU_PWR)
imupwr.direction = digitalio.Direction.OUTPUT
imupwr.value = True

imu_i2c = busio.I2C(board.IMU_SCL, board.IMU_SDA)
sensor = LSM6DS3TRC(imu_i2c)

while True:
print("Acceleration: X:%.2f, Y: %.2f, Z: %.2f m/s^2" % (sensor.acceleration))
print("Gyro X:%.2f, Y: %.2f, Z: %.2f radians/s" % (sensor.gyro))
print("")
time.sleep(0.5)

0 comments on commit 7261e46

Please sign in to comment.