From 319952650bd14473cef2a80250b5131c6fb04611 Mon Sep 17 00:00:00 2001 From: brian-eng Date: Fri, 31 Jan 2025 12:14:23 -0500 Subject: [PATCH] Add Temperature Oversampling --- adafruit_mlx90393.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/adafruit_mlx90393.py b/adafruit_mlx90393.py index a562e82..3535467 100755 --- a/adafruit_mlx90393.py +++ b/adafruit_mlx90393.py @@ -215,6 +215,7 @@ def __init__( # pylint: disable=too-many-arguments filt: int = FILTER_7, oversampling: int = OSR_3, temperature_compensation: bool = False, + temperature_oversampling: int = OSR_0, offset: int = 0, debug: bool = False, ) -> None: @@ -226,6 +227,7 @@ def __init__( # pylint: disable=too-many-arguments self._osr = oversampling self._gain_current = gain self._temperature_compensation = temperature_compensation + self._osr2 = temperature_oversampling # Typical value according the application note self._tref = 0xB668 self._off_x = self._off_y = self._off_z = offset @@ -247,6 +249,7 @@ def __init__( # pylint: disable=too-many-arguments # Set gain to the supplied level self.gain = self._gain_current self.temperature_compensation = self._temperature_compensation + self.temperature_oversampling = self._osr2 # Set offsets to supplied level self.offset_x = self._off_x @@ -387,7 +390,7 @@ def filter(self, level: int) -> None: @property def oversampling(self) -> int: - """The oversampling level.""" + """The magnetic sensor oversampling level.""" return self._osr @oversampling.setter @@ -414,6 +417,21 @@ def temperature_compensation(self, temperature_compensation: bool) -> None: self.write_reg(_CMD_REG_CONF2, reg) self._temperature_compensation = temperature_compensation + @property + def temperature_oversampling(self) -> int: + """The temperature sensor oversampling level.""" + return self._osr2 + + @temperature_oversampling.setter + def temperature_oversampling(self, level: int) -> None: + if level not in range(4): + raise ValueError("Incorrect oversampling level.") + reg = self.read_reg(_CMD_REG_CONF3) + reg &= 0xE7FF + reg |= (level & 0x3) << 12 + self.write_reg(_CMD_REG_CONF3, reg) + self._osr2 = level + @property def offset_x(self) -> int: """The X axis offset."""