diff --git a/esphome/components/lsm6ds/__init__.py b/esphome/components/lsm6ds/__init__.py index c970b5fc7..63204fc23 100644 --- a/esphome/components/lsm6ds/__init__.py +++ b/esphome/components/lsm6ds/__init__.py @@ -11,14 +11,14 @@ from .const import ( CONF_ACCEL_ODR, CONF_GYRO_ODR, LSM6DS_ACCEL_RANGE_2G, + LSM6DS_ACCEL_RANGE_16G, LSM6DS_ACCEL_RANGE_4G, LSM6DS_ACCEL_RANGE_8G, - LSM6DS_ACCEL_RANGE_16G, - LSM6DS_GYRO_RANGE_125DPS, LSM6DS_GYRO_RANGE_250DPS, LSM6DS_GYRO_RANGE_500DPS, LSM6DS_GYRO_RANGE_1000DPS, LSM6DS_GYRO_RANGE_2000DPS, + LSM6DS_GYRO_RANGE_125DPS, LSM6DS_ACCEL_ODR_OFF, LSM6DS_ACCEL_ODR_12_5HZ, LSM6DS_ACCEL_ODR_26HZ, @@ -30,6 +30,17 @@ from .const import ( LSM6DS_ACCEL_ODR_1_66KHZ, LSM6DS_ACCEL_ODR_3_33KHZ, LSM6DS_ACCEL_ODR_6_66KHZ, + LSM6DS_GYRO_ODR_OFF, + LSM6DS_GYRO_ODR_12_5HZ, + LSM6DS_GYRO_ODR_26HZ, + LSM6DS_GYRO_ODR_52HZ, + LSM6DS_GYRO_ODR_104HZ, + LSM6DS_GYRO_ODR_208HZ, + LSM6DS_GYRO_ODR_416HZ, + LSM6DS_GYRO_ODR_833HZ, + LSM6DS_GYRO_ODR_1_66KHZ, + LSM6DS_GYRO_ODR_3_33KHZ, + LSM6DS_GYRO_ODR_6_66KHZ, ) DEPENDENCIES = ["i2c"] @@ -39,20 +50,20 @@ LSM6DSI2CDevice = lsm6ds_ns.class_("LSM6DSI2CDevice", LSM6DSComponent, i2c.I2CDe ACCEL_RANGES = { "2G": LSM6DS_ACCEL_RANGE_2G, + "16G": LSM6DS_ACCEL_RANGE_16G, "4G": LSM6DS_ACCEL_RANGE_4G, "8G": LSM6DS_ACCEL_RANGE_8G, - "16G": LSM6DS_ACCEL_RANGE_16G, } GYRO_RANGES = { - "125DPS": LSM6DS_GYRO_RANGE_125DPS, "250DPS": LSM6DS_GYRO_RANGE_250DPS, "500DPS": LSM6DS_GYRO_RANGE_500DPS, "1000DPS": LSM6DS_GYRO_RANGE_1000DPS, "2000DPS": LSM6DS_GYRO_RANGE_2000DPS, + "125DPS": LSM6DS_GYRO_RANGE_125DPS, } -ODRS = { +ACCEL_ODRS = { "0HZ": LSM6DS_ACCEL_ODR_OFF, "12.5HZ": LSM6DS_ACCEL_ODR_12_5HZ, "26HZ": LSM6DS_ACCEL_ODR_26HZ, @@ -66,11 +77,25 @@ ODRS = { "6.66KHZ": LSM6DS_ACCEL_ODR_6_66KHZ, } +GYRO_ODRS = { + "0HZ": LSM6DS_GYRO_ODR_OFF, + "12.5HZ": LSM6DS_GYRO_ODR_12_5HZ, + "26HZ": LSM6DS_GYRO_ODR_26HZ, + "52HZ": LSM6DS_GYRO_ODR_52HZ, + "104HZ": LSM6DS_GYRO_ODR_104HZ, + "208HZ": LSM6DS_GYRO_ODR_208HZ, + "416HZ": LSM6DS_GYRO_ODR_416HZ, + "833HZ": LSM6DS_GYRO_ODR_833HZ, + "1.66KHZ": LSM6DS_GYRO_ODR_1_66KHZ, + "3.33KHZ": LSM6DS_GYRO_ODR_3_33KHZ, + "6.66KHZ": LSM6DS_GYRO_ODR_6_66KHZ, +} + BASE_SCHEMA = cv.Schema({ cv.Optional(CONF_ACCEL_RANGE, default="2G"): cv.enum(ACCEL_RANGES, upper=True), cv.Optional(CONF_GYRO_RANGE, default="250DPS"): cv.enum(GYRO_RANGES, upper=True), - cv.Optional(CONF_ACCEL_ODR, default="104HZ"): cv.enum(ODRS, upper=True), - cv.Optional(CONF_GYRO_ODR, default="104HZ"): cv.enum(ODRS, upper=True), + cv.Optional(CONF_ACCEL_ODR, default="104HZ"): cv.enum(ACCEL_ODRS, upper=True), + cv.Optional(CONF_GYRO_ODR, default="104HZ"): cv.enum(GYRO_ODRS, upper=True), }).extend(cv.polling_component_schema("60s")) CONFIG_SCHEMA = cv.Schema({ @@ -84,8 +109,8 @@ async def to_code(config): accel_range = ACCEL_RANGES[config[CONF_ACCEL_RANGE]] gyro_range = GYRO_RANGES[config[CONF_GYRO_RANGE]] - accel_odr = ODRS[config[CONF_ACCEL_ODR]] - gyro_odr = ODRS[config[CONF_GYRO_ODR]] + accel_odr = ACCEL_ODRS[config[CONF_ACCEL_ODR]] + gyro_odr = GYRO_ODRS[config[CONF_GYRO_ODR]] cg.add(var.set_accel_range(accel_range)) cg.add(var.set_gyro_range(gyro_range)) diff --git a/esphome/components/lsm6ds/const.py b/esphome/components/lsm6ds/const.py index 90274a216..dd3184a67 100644 --- a/esphome/components/lsm6ds/const.py +++ b/esphome/components/lsm6ds/const.py @@ -19,18 +19,19 @@ LSM6DSComponent = lsm6ds_ns.class_("LSM6DSComponent", cg.PollingComponent) LSM6DSAccelRange = lsm6ds_ns.enum("LSM6DSAccelRange") LSM6DS_ACCEL_RANGE_2G = LSM6DSAccelRange.LSM6DS_ACCEL_RANGE_2G +LSM6DS_ACCEL_RANGE_16G = LSM6DSAccelRange.LSM6DS_ACCEL_RANGE_16G LSM6DS_ACCEL_RANGE_4G = LSM6DSAccelRange.LSM6DS_ACCEL_RANGE_4G LSM6DS_ACCEL_RANGE_8G = LSM6DSAccelRange.LSM6DS_ACCEL_RANGE_8G -LSM6DS_ACCEL_RANGE_16G = LSM6DSAccelRange.LSM6DS_ACCEL_RANGE_16G LSM6DSGyroRange = lsm6ds_ns.enum("LSM6DSGyroRange") -LSM6DS_GYRO_RANGE_125DPS = LSM6DSGyroRange.LSM6DS_GYRO_RANGE_125DPS LSM6DS_GYRO_RANGE_250DPS = LSM6DSGyroRange.LSM6DS_GYRO_RANGE_250DPS LSM6DS_GYRO_RANGE_500DPS = LSM6DSGyroRange.LSM6DS_GYRO_RANGE_500DPS LSM6DS_GYRO_RANGE_1000DPS = LSM6DSGyroRange.LSM6DS_GYRO_RANGE_1000DPS LSM6DS_GYRO_RANGE_2000DPS = LSM6DSGyroRange.LSM6DS_GYRO_RANGE_2000DPS +LSM6DS_GYRO_RANGE_125DPS = LSM6DSGyroRange.LSM6DS_GYRO_RANGE_125DPS LSM6DSODR = lsm6ds_ns.enum("LSM6DSODR") +# Accelerometer ODR Values (matches ODR_XL[3:0] in CTRL1_XL) LSM6DS_ACCEL_ODR_OFF = LSM6DSODR.LSM6DS_ODR_OFF LSM6DS_ACCEL_ODR_12_5HZ = LSM6DSODR.LSM6DS_ODR_12_5HZ LSM6DS_ACCEL_ODR_26HZ = LSM6DSODR.LSM6DS_ODR_26HZ @@ -43,6 +44,19 @@ LSM6DS_ACCEL_ODR_1_66KHZ = LSM6DSODR.LSM6DS_ODR_1_66KHZ LSM6DS_ACCEL_ODR_3_33KHZ = LSM6DSODR.LSM6DS_ODR_3_33KHZ LSM6DS_ACCEL_ODR_6_66KHZ = LSM6DSODR.LSM6DS_ODR_6_66KHZ +# Gyroscope ODR Values (matches ODR_G[3:0] in CTRL2_G) +LSM6DS_GYRO_ODR_OFF = LSM6DSODR.LSM6DS_ODR_OFF +LSM6DS_GYRO_ODR_12_5HZ = LSM6DSODR.LSM6DS_ODR_12_5HZ +LSM6DS_GYRO_ODR_26HZ = LSM6DSODR.LSM6DS_ODR_26HZ +LSM6DS_GYRO_ODR_52HZ = LSM6DSODR.LSM6DS_ODR_52HZ +LSM6DS_GYRO_ODR_104HZ = LSM6DSODR.LSM6DS_ODR_104HZ +LSM6DS_GYRO_ODR_208HZ = LSM6DSODR.LSM6DS_ODR_208HZ +LSM6DS_GYRO_ODR_416HZ = LSM6DSODR.LSM6DS_ODR_416HZ +LSM6DS_GYRO_ODR_833HZ = LSM6DSODR.LSM6DS_ODR_833HZ +LSM6DS_GYRO_ODR_1_66KHZ = LSM6DSODR.LSM6DS_ODR_1_66KHZ +LSM6DS_GYRO_ODR_3_33KHZ = LSM6DSODR.LSM6DS_ODR_3_33KHZ +LSM6DS_GYRO_ODR_6_66KHZ = LSM6DSODR.LSM6DS_ODR_6_66KHZ + CONF_ACCEL_X = "accel_x" CONF_ACCEL_Y = "accel_y" CONF_ACCEL_Z = "accel_z"