From 26083c00796cd16292e1369c8d3d20b726f1215f Mon Sep 17 00:00:00 2001 From: dherrada Date: Tue, 30 Jun 2020 11:55:47 -0400 Subject: [PATCH 1/6] Added ability to configure accelerometer --- adafruit_bno055.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/adafruit_bno055.py b/adafruit_bno055.py index 10fd1be..ae2ab2e 100644 --- a/adafruit_bno055.py +++ b/adafruit_bno055.py @@ -56,12 +56,32 @@ NDOF_FMC_OFF_MODE = const(0x0B) NDOF_MODE = const(0x0C) +ACC_2G = const(0x00) +ACC_4G = const(0x01) +ACC_8G = const(0x02) +ACC_16G = const(0x03) +ACC_7_81HZ = const(0x00) +ACC_15_63HZ = const(0x04) +ACC_31_25HZ = const(0x08) +ACC_62_5HZ = const(0x0C) +ACC_125HZ = const(0x10) +ACC_250HZ = const(0x14) +ACC_500HZ = const(0x18) +ACC_1000HZ = const(0x1C) +ACC_NORMAL_MODE = const(0x00) +ACC_SUSPEND_MODE = const(0x20) +ACC_LOWPOWER1_MODE = const(0x40) +ACC_STANDBY_MODE = const(0x60) +ACC_LOWPOWER2_MODE = const(0x80) +ACC_DEEPSUSPEND_MODE = const(0xA0) + _POWER_NORMAL = const(0x00) _POWER_LOW = const(0x01) _POWER_SUSPEND = const(0x02) _MODE_REGISTER = const(0x3D) _PAGE_REGISTER = const(0x07) +_ACC_CONFIG_REGISTER = const(0x08) _CALIBRATION_REGISTER = const(0x35) _OFFSET_ACCEL_REGISTER = const(0x55) _OFFSET_MAGNET_REGISTER = const(0x5B) @@ -327,6 +347,15 @@ def gravity(self): def _gravity(self): raise NotImplementedError("Must be implemented.") + def accel_config(self, rng=ACC_4G, bandwidth=ACC_62_5HZ, acc_mode=ACC_NORMAL_MODE): + """Allows you to set the settings for the accelerometer""" + if self.mode not in [0x08, 0x09, 0x0A, 0x0B, 0x0C]: + self._write_register(_ACC_CONFIG_REGISTER, acc_mode | bandwidth | rng) + time.sleep(0.1) + value = self._read_register(_ACC_CONFIG_REGISTER) + return value + raise RuntimeError("Mode must not be a fusion mode") + def _write_register(self, register, value): raise NotImplementedError("Must be implemented.") From 18170191aa55e8739e97411592eee2c165e1853b Mon Sep 17 00:00:00 2001 From: dherrada Date: Thu, 16 Jul 2020 13:16:12 -0400 Subject: [PATCH 2/6] Added support for setting other sensors --- adafruit_bno055.py | 256 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 229 insertions(+), 27 deletions(-) diff --git a/adafruit_bno055.py b/adafruit_bno055.py index ae2ab2e..7c6a945 100644 --- a/adafruit_bno055.py +++ b/adafruit_bno055.py @@ -56,24 +56,60 @@ NDOF_FMC_OFF_MODE = const(0x0B) NDOF_MODE = const(0x0C) -ACC_2G = const(0x00) -ACC_4G = const(0x01) -ACC_8G = const(0x02) -ACC_16G = const(0x03) -ACC_7_81HZ = const(0x00) -ACC_15_63HZ = const(0x04) -ACC_31_25HZ = const(0x08) -ACC_62_5HZ = const(0x0C) -ACC_125HZ = const(0x10) -ACC_250HZ = const(0x14) -ACC_500HZ = const(0x18) -ACC_1000HZ = const(0x1C) -ACC_NORMAL_MODE = const(0x00) -ACC_SUSPEND_MODE = const(0x20) -ACC_LOWPOWER1_MODE = const(0x40) -ACC_STANDBY_MODE = const(0x60) -ACC_LOWPOWER2_MODE = const(0x80) -ACC_DEEPSUSPEND_MODE = const(0xA0) +ACCEL_2G = const(0x00) # For accel_range property +ACCEL_4G = const(0x01) # Default +ACCEL_8G = const(0x02) +ACCEL_16G = const(0x03) +ACCEL_7_81HZ = const(0x00) # For accel_bandwidth property +ACCEL_15_63HZ = const(0x04) +ACCEL_31_25HZ = const(0x08) +ACCEL_62_5HZ = const(0x0C) # Default +ACCEL_125HZ = const(0x10) +ACCEL_250HZ = const(0x14) +ACCEL_500HZ = const(0x18) +ACCEL_1000HZ = const(0x1C) +ACCEL_NORMAL_MODE = const(0x00) # Default. For accel_mode property +ACCEL_SUSPEND_MODE = const(0x20) +ACCEL_LOWPOWER1_MODE = const(0x40) +ACCEL_STANDBY_MODE = const(0x60) +ACCEL_LOWPOWER2_MODE = const(0x80) +ACCEL_DEEPSUSPEND_MODE = const(0xA0) + +GYRO_2000_DPS = const(0x00) # Default. For gyro_range property +GYRO_1000_DPS = const(0x01) +GYRO_500_DPS = const(0x02) +GYRO_250_DPS = const(0x03) +GYRO_125_DPS = const(0x04) +GYRO_523HZ = const(0x00) # For gyro_bandwidth property +GYRO_230HZ = const(0x08) +GYRO_116HZ = const(0x10) +GYRO_47HZ = const(0x18) +GYRO_23HZ = const(0x20) +GYRO_12HZ = const(0x28) +GYRO_64HZ = const(0x30) +GYRO_32HZ = const(0x38) # Default +GYRO_NORMAL_MODE = const(0x00) # Default. For gyro_mode property +GYRO_FASTPOWERUP_MODE = const(0x01) +GYRO_DEEPSUSPEND_MODE = const(0x02) +GYRO_SUSPEND_MODE = const(0x03) +GYRO_ADVANCEDPOWERSAVE_MODE = const(0x04) + +MAGNET_2HZ = const(0x00) # For magnet_rate property +MAGNET_6HZ = const(0x01) +MAGNET_8HZ = const(0x02) +MAGNET_10HZ = const(0x03) +MAGNET_15HZ = const(0x04) +MAGNET_20HZ = const(0x05) # Default +MAGNET_25HZ = const(0x06) +MAGNET_30HZ = const(0x07) +MAGNET_LOWPOWER_MODE = const(0x00) # For magnet_operation_mode property +MAGNET_REGULAR_MODE = const(0x08) # Default +MAGNET_ENHANCEDREGULAR_MODE = const(0x10) +MAGNET_ACCURACY_MODE = const(0x18) +MAGNET_NORMAL_MODE = const(0x00) # for magnet_power_mode property +MAGNET_SLEEP_MODE = const(0x20) +MAGNET_SUSPEND_MODE = const(0x40) +MAGNET_FORCEMODE_MODE = const(0x60) # Default _POWER_NORMAL = const(0x00) _POWER_LOW = const(0x01) @@ -81,7 +117,10 @@ _MODE_REGISTER = const(0x3D) _PAGE_REGISTER = const(0x07) -_ACC_CONFIG_REGISTER = const(0x08) +_ACCEL_CONFIG_REGISTER = const(0x08) +_MAGNET_CONFIG_REGISTER = const(0x09) +_GYRO_CONFIG_0_REGISTER = const(0x0A) +_GYRO_CONFIG_1_REGISTER = const(0x0B) _CALIBRATION_REGISTER = const(0x35) _OFFSET_ACCEL_REGISTER = const(0x55) _OFFSET_MAGNET_REGISTER = const(0x5B) @@ -146,6 +185,9 @@ def __init__(self): self._write_register(_POWER_REGISTER, _POWER_NORMAL) self._write_register(_PAGE_REGISTER, 0x00) self._write_register(_TRIGGER_REGISTER, 0x00) + self.accel_range = ACCEL_4G + self.gyro_range = GYRO_2000_DPS + self.magnet_rate = MAGNET_20HZ time.sleep(0.01) self.mode = NDOF_MODE time.sleep(0.01) @@ -347,14 +389,174 @@ def gravity(self): def _gravity(self): raise NotImplementedError("Must be implemented.") - def accel_config(self, rng=ACC_4G, bandwidth=ACC_62_5HZ, acc_mode=ACC_NORMAL_MODE): - """Allows you to set the settings for the accelerometer""" - if self.mode not in [0x08, 0x09, 0x0A, 0x0B, 0x0C]: - self._write_register(_ACC_CONFIG_REGISTER, acc_mode | bandwidth | rng) - time.sleep(0.1) - value = self._read_register(_ACC_CONFIG_REGISTER) - return value - raise RuntimeError("Mode must not be a fusion mode") + @property + def accel_range(self): + """ Switch the accelerometer range and return the new range. Default value: +/- 4g + See table 3-8 in the datasheet. + """ + self._write_register(_PAGE_REGISTER, 0x01) + value = self._read_register(_ACCEL_CONFIG_REGISTER) + self._write_register(_PAGE_REGISTER, 0x00) + return bin(0b00000011 & value) + + @accel_range.setter + def accel_range(self, rng=ACCEL_4G): + self._write_register(_PAGE_REGISTER, 0x01) + value = self._read_register(_ACCEL_CONFIG_REGISTER) + masked_value = 0b11111100 & value + self._write_register(_ACCEL_CONFIG_REGISTER, masked_value | rng) + + @property + def accel_bandwidth(self): + """ Switch the accelerometer bandwidth and return the new bandwidth. Default value: 62.5 Hz + See table 3-8 in the datasheet. + """ + self._write_register(_PAGE_REGISTER, 0x01) + value = self._read_register(_ACCEL_CONFIG_REGISTER) + self._write_register(_PAGE_REGISTER, 0x00) + return bin(0b00011100 & value) + + @accel_bandwidth.setter + def accel_bandwidth(self, bandwidth=ACCEL_62_5HZ): + if self.mode in [0x08, 0x09, 0x0A, 0x0B, 0x0C]: + raise RuntimeError("Mode must not be a fusion mode") + self._write_register(_PAGE_REGISTER, 0x01) + value = self._read_register(_ACCEL_CONFIG_REGISTER) + masked_value = 0b11100011 & value + self._write_register(_ACCEL_CONFIG_REGISTER, masked_value | bandwidth) + + @property + def accel_mode(self): + """ Switch the accelerometer mode and return the new mode. Default value: Normal + See table 3-8 in the datasheet. + """ + self._write_register(_PAGE_REGISTER, 0x01) + value = self._read_register(_ACCEL_CONFIG_REGISTER) + self._write_register(_PAGE_REGISTER, 0x00) + return bin(0b11100000 & value) + + @accel_mode.setter + def accel_mode(self, mode=ACCEL_NORMAL_MODE): + if self.mode in [0x08, 0x09, 0x0A, 0x0B, 0x0C]: + raise RuntimeError("Mode must not be a fusion mode") + self._write_register(_PAGE_REGISTER, 0x01) + value = self._read_register(_ACCEL_CONFIG_REGISTER) + masked_value = 0b00011111 & value + self._write_register(_ACCEL_CONFIG_REGISTER, masked_value | mode) + + @property + def gyro_range(self): + """ Switch the gyroscope range and return the new range. Default value: 2000 dps + See table 3-9 in the datasheet. + """ + self._write_register(_PAGE_REGISTER, 0x01) + value = self._read_register(_GYRO_CONFIG_0_REGISTER) + self._write_register(_PAGE_REGISTER, 0x00) + return bin(0b00000111 & value) + + @gyro_range.setter + def gyro_range(self, rng=GYRO_2000_DPS): + if self.mode in [0x08, 0x09, 0x0A, 0x0B, 0x0C]: + raise RuntimeError("Mode must not be a fusion mode") + self._write_register(_PAGE_REGISTER, 0x01) + value = self._read_register(_GYRO_CONFIG_0_REGISTER) + masked_value = 0b00111000 & value + self._write_register(_GYRO_CONFIG_0_REGISTER, masked_value | rng) + + @property + def gyro_bandwidth(self): + """ Switch the gyroscope bandwidth and return the new bandwidth. Default value: 32 Hz + See table 3-9 in the datasheet. + """ + self._write_register(_PAGE_REGISTER, 0x01) + value = self._read_register(_GYRO_CONFIG_0_REGISTER) + self._write_register(_PAGE_REGISTER, 0x00) + return bin(0b00111000 & value) + + @gyro_bandwidth.setter + def gyro_bandwidth(self, bandwidth=GYRO_32HZ): + if self.mode in [0x08, 0x09, 0x0A, 0x0B, 0x0C]: + raise RuntimeError("Mode must not be a fusion mode") + self._write_register(_PAGE_REGISTER, 0x01) + value = self._read_register(_GYRO_CONFIG_0_REGISTER) + masked_value = 0b00000111 & value + self._write_register(_GYRO_CONFIG_0_REGISTER, masked_value | bandwidth) + + @property + def gyro_mode(self): + """ Switch the gyroscope mode and return the new mode. Default value: Normal + See table 3-9 in the datasheet. + """ + self._write_register(_PAGE_REGISTER, 0x01) + value = self._read_register(_GYRO_CONFIG_1_REGISTER) + self._write_register(_PAGE_REGISTER, 0x00) + return bin(0b00000111 & value) + + @gyro_mode.setter + def gyro_mode(self, mode=GYRO_NORMAL_MODE): + if self.mode in [0x08, 0x09, 0x0A, 0x0B, 0x0C]: + raise RuntimeError("Mode must not be a fusion mode") + self._write_register(_PAGE_REGISTER, 0x01) + value = self._read_register(_GYRO_CONFIG_1_REGISTER) + masked_value = 0b00000000 & value + self._write_register(_GYRO_CONFIG_1_REGISTER, masked_value | mode) + + @property + def magnet_rate(self): + """ Switch the magnetometer data output rate and return the new rate. Default value: 20Hz + See table 3-10 in the datasheet. + """ + self._write_register(_PAGE_REGISTER, 0x01) + value = self._read_register(_MAGNET_CONFIG_REGISTER) + self._write_register(_PAGE_REGISTER, 0x00) + return bin(0b00000111 & value) + + @magnet_rate.setter + def magnet_rate(self, rate=MAGNET_20HZ): + if self.mode in [0x08, 0x09, 0x0A, 0x0B, 0x0C]: + raise RuntimeError("Mode must not be a fusion mode") + self._write_register(_PAGE_REGISTER, 0x01) + value = self._read_register(_MAGNET_CONFIG_REGISTER) + masked_value = 0b01111000 & value + self._write_register(_MAGNET_CONFIG_REGISTER, masked_value | rate) + + @property + def magnet_operation_mode(self): + """ Switch the magnetometer operation mode and return the new mode. Default value: Regular + See table 3-10 in the datasheet. + """ + self._write_register(_PAGE_REGISTER, 0x01) + value = self._read_register(_MAGNET_CONFIG_REGISTER) + self._write_register(_PAGE_REGISTER, 0x00) + return bin(0b00011000 & value) + + @magnet_operation_mode.setter + def magnet_operation_mode(self, mode=MAGNET_REGULAR_MODE): + if self.mode in [0x08, 0x09, 0x0A, 0x0B, 0x0C]: + raise RuntimeError("Mode must not be a fusion mode") + self._write_register(_PAGE_REGISTER, 0x01) + value = self._read_register(_MAGNET_CONFIG_REGISTER) + masked_value = 0b01100111 & value + self._write_register(_MAGNET_CONFIG_REGISTER, masked_value | mode) + + @property + def magnet_power_mode(self): + """ Switch the magnetometer power mode and return the new mode. Default value: Forced + See table 3-10 in the datasheet. + """ + self._write_register(_PAGE_REGISTER, 0x01) + value = self._read_register(_MAGNET_CONFIG_REGISTER) + self._write_register(_PAGE_REGISTER, 0x00) + return bin(0b01100000 & value) + + @magnet_power_mode.setter + def magnet_power_mode(self, mode=MAGNET_FORCEMODE_MODE): + if self.mode in [0x08, 0x09, 0x0A, 0x0B, 0x0C]: + raise RuntimeError("Mode must not be a fusion mode") + self._write_register(_PAGE_REGISTER, 0x01) + value = self._read_register(_MAGNET_CONFIG_REGISTER) + masked_value = 0b00011111 & value + self._write_register(_MAGNET_CONFIG_REGISTER, masked_value | mode) def _write_register(self, register, value): raise NotImplementedError("Must be implemented.") From e9e0cd6362e4129fe30467ec6572087bd2e2d262 Mon Sep 17 00:00:00 2001 From: dherrada Date: Thu, 16 Jul 2020 13:18:50 -0400 Subject: [PATCH 3/6] Formatted --- adafruit_bno055.py | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/adafruit_bno055.py b/adafruit_bno055.py index 7c6a945..14fd7fe 100644 --- a/adafruit_bno055.py +++ b/adafruit_bno055.py @@ -56,60 +56,60 @@ NDOF_FMC_OFF_MODE = const(0x0B) NDOF_MODE = const(0x0C) -ACCEL_2G = const(0x00) # For accel_range property -ACCEL_4G = const(0x01) # Default +ACCEL_2G = const(0x00) # For accel_range property +ACCEL_4G = const(0x01) # Default ACCEL_8G = const(0x02) ACCEL_16G = const(0x03) -ACCEL_7_81HZ = const(0x00) # For accel_bandwidth property +ACCEL_7_81HZ = const(0x00) # For accel_bandwidth property ACCEL_15_63HZ = const(0x04) ACCEL_31_25HZ = const(0x08) -ACCEL_62_5HZ = const(0x0C) # Default +ACCEL_62_5HZ = const(0x0C) # Default ACCEL_125HZ = const(0x10) ACCEL_250HZ = const(0x14) ACCEL_500HZ = const(0x18) ACCEL_1000HZ = const(0x1C) -ACCEL_NORMAL_MODE = const(0x00) # Default. For accel_mode property +ACCEL_NORMAL_MODE = const(0x00) # Default. For accel_mode property ACCEL_SUSPEND_MODE = const(0x20) ACCEL_LOWPOWER1_MODE = const(0x40) ACCEL_STANDBY_MODE = const(0x60) ACCEL_LOWPOWER2_MODE = const(0x80) ACCEL_DEEPSUSPEND_MODE = const(0xA0) -GYRO_2000_DPS = const(0x00) # Default. For gyro_range property +GYRO_2000_DPS = const(0x00) # Default. For gyro_range property GYRO_1000_DPS = const(0x01) GYRO_500_DPS = const(0x02) GYRO_250_DPS = const(0x03) GYRO_125_DPS = const(0x04) -GYRO_523HZ = const(0x00) # For gyro_bandwidth property +GYRO_523HZ = const(0x00) # For gyro_bandwidth property GYRO_230HZ = const(0x08) GYRO_116HZ = const(0x10) GYRO_47HZ = const(0x18) GYRO_23HZ = const(0x20) GYRO_12HZ = const(0x28) GYRO_64HZ = const(0x30) -GYRO_32HZ = const(0x38) # Default -GYRO_NORMAL_MODE = const(0x00) # Default. For gyro_mode property +GYRO_32HZ = const(0x38) # Default +GYRO_NORMAL_MODE = const(0x00) # Default. For gyro_mode property GYRO_FASTPOWERUP_MODE = const(0x01) GYRO_DEEPSUSPEND_MODE = const(0x02) GYRO_SUSPEND_MODE = const(0x03) GYRO_ADVANCEDPOWERSAVE_MODE = const(0x04) -MAGNET_2HZ = const(0x00) # For magnet_rate property +MAGNET_2HZ = const(0x00) # For magnet_rate property MAGNET_6HZ = const(0x01) MAGNET_8HZ = const(0x02) MAGNET_10HZ = const(0x03) MAGNET_15HZ = const(0x04) -MAGNET_20HZ = const(0x05) # Default +MAGNET_20HZ = const(0x05) # Default MAGNET_25HZ = const(0x06) MAGNET_30HZ = const(0x07) -MAGNET_LOWPOWER_MODE = const(0x00) # For magnet_operation_mode property -MAGNET_REGULAR_MODE = const(0x08) # Default +MAGNET_LOWPOWER_MODE = const(0x00) # For magnet_operation_mode property +MAGNET_REGULAR_MODE = const(0x08) # Default MAGNET_ENHANCEDREGULAR_MODE = const(0x10) MAGNET_ACCURACY_MODE = const(0x18) -MAGNET_NORMAL_MODE = const(0x00) # for magnet_power_mode property +MAGNET_NORMAL_MODE = const(0x00) # for magnet_power_mode property MAGNET_SLEEP_MODE = const(0x20) MAGNET_SUSPEND_MODE = const(0x40) -MAGNET_FORCEMODE_MODE = const(0x60) # Default +MAGNET_FORCEMODE_MODE = const(0x60) # Default _POWER_NORMAL = const(0x00) _POWER_LOW = const(0x01) @@ -172,7 +172,7 @@ def __set__(self, obj, value): obj.mode = last_mode -class BNO055: +class BNO055: # pylint: disable=too-many-public-methods """ Base class for the BNO055 9DOF IMU sensor. """ From 3df8b6cd1e41db89033dd4ae4d7e4ebe44895d2e Mon Sep 17 00:00:00 2001 From: dherrada Date: Tue, 21 Jul 2020 09:15:20 -0400 Subject: [PATCH 4/6] Sensor config setters now switch back to page 0 --- adafruit_bno055.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/adafruit_bno055.py b/adafruit_bno055.py index 14fd7fe..5564dec 100644 --- a/adafruit_bno055.py +++ b/adafruit_bno055.py @@ -405,6 +405,7 @@ def accel_range(self, rng=ACCEL_4G): value = self._read_register(_ACCEL_CONFIG_REGISTER) masked_value = 0b11111100 & value self._write_register(_ACCEL_CONFIG_REGISTER, masked_value | rng) + self._write_register(_PAGE_REGISTER, 0x00) @property def accel_bandwidth(self): @@ -424,6 +425,7 @@ def accel_bandwidth(self, bandwidth=ACCEL_62_5HZ): value = self._read_register(_ACCEL_CONFIG_REGISTER) masked_value = 0b11100011 & value self._write_register(_ACCEL_CONFIG_REGISTER, masked_value | bandwidth) + self._write_register(_PAGE_REGISTER, 0x00) @property def accel_mode(self): @@ -443,6 +445,7 @@ def accel_mode(self, mode=ACCEL_NORMAL_MODE): value = self._read_register(_ACCEL_CONFIG_REGISTER) masked_value = 0b00011111 & value self._write_register(_ACCEL_CONFIG_REGISTER, masked_value | mode) + self._write_register(_PAGE_REGISTER, 0x00) @property def gyro_range(self): @@ -462,6 +465,7 @@ def gyro_range(self, rng=GYRO_2000_DPS): value = self._read_register(_GYRO_CONFIG_0_REGISTER) masked_value = 0b00111000 & value self._write_register(_GYRO_CONFIG_0_REGISTER, masked_value | rng) + self._write_register(_PAGE_REGISTER, 0x00) @property def gyro_bandwidth(self): @@ -481,6 +485,7 @@ def gyro_bandwidth(self, bandwidth=GYRO_32HZ): value = self._read_register(_GYRO_CONFIG_0_REGISTER) masked_value = 0b00000111 & value self._write_register(_GYRO_CONFIG_0_REGISTER, masked_value | bandwidth) + self._write_register(_PAGE_REGISTER, 0x00) @property def gyro_mode(self): @@ -500,6 +505,7 @@ def gyro_mode(self, mode=GYRO_NORMAL_MODE): value = self._read_register(_GYRO_CONFIG_1_REGISTER) masked_value = 0b00000000 & value self._write_register(_GYRO_CONFIG_1_REGISTER, masked_value | mode) + self._write_register(_PAGE_REGISTER, 0x00) @property def magnet_rate(self): @@ -519,6 +525,7 @@ def magnet_rate(self, rate=MAGNET_20HZ): value = self._read_register(_MAGNET_CONFIG_REGISTER) masked_value = 0b01111000 & value self._write_register(_MAGNET_CONFIG_REGISTER, masked_value | rate) + self._write_register(_PAGE_REGISTER, 0x00) @property def magnet_operation_mode(self): @@ -538,6 +545,7 @@ def magnet_operation_mode(self, mode=MAGNET_REGULAR_MODE): value = self._read_register(_MAGNET_CONFIG_REGISTER) masked_value = 0b01100111 & value self._write_register(_MAGNET_CONFIG_REGISTER, masked_value | mode) + self._write_register(_PAGE_REGISTER, 0x00) @property def magnet_power_mode(self): @@ -557,6 +565,7 @@ def magnet_power_mode(self, mode=MAGNET_FORCEMODE_MODE): value = self._read_register(_MAGNET_CONFIG_REGISTER) masked_value = 0b00011111 & value self._write_register(_MAGNET_CONFIG_REGISTER, masked_value | mode) + self._write_register(_PAGE_REGISTER, 0x00) def _write_register(self, register, value): raise NotImplementedError("Must be implemented.") From dc6939034bdeb3f89d8af82d074d0bb07b8b3920 Mon Sep 17 00:00:00 2001 From: dherrada Date: Wed, 22 Jul 2020 09:14:10 -0400 Subject: [PATCH 5/6] Changed return type to int --- adafruit_bno055.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/adafruit_bno055.py b/adafruit_bno055.py index 5564dec..58e2c54 100644 --- a/adafruit_bno055.py +++ b/adafruit_bno055.py @@ -397,7 +397,7 @@ def accel_range(self): self._write_register(_PAGE_REGISTER, 0x01) value = self._read_register(_ACCEL_CONFIG_REGISTER) self._write_register(_PAGE_REGISTER, 0x00) - return bin(0b00000011 & value) + return 0b00000011 & value @accel_range.setter def accel_range(self, rng=ACCEL_4G): @@ -415,7 +415,7 @@ def accel_bandwidth(self): self._write_register(_PAGE_REGISTER, 0x01) value = self._read_register(_ACCEL_CONFIG_REGISTER) self._write_register(_PAGE_REGISTER, 0x00) - return bin(0b00011100 & value) + return 0b00011100 & value @accel_bandwidth.setter def accel_bandwidth(self, bandwidth=ACCEL_62_5HZ): @@ -435,7 +435,7 @@ def accel_mode(self): self._write_register(_PAGE_REGISTER, 0x01) value = self._read_register(_ACCEL_CONFIG_REGISTER) self._write_register(_PAGE_REGISTER, 0x00) - return bin(0b11100000 & value) + return 0b11100000 & value @accel_mode.setter def accel_mode(self, mode=ACCEL_NORMAL_MODE): @@ -455,7 +455,7 @@ def gyro_range(self): self._write_register(_PAGE_REGISTER, 0x01) value = self._read_register(_GYRO_CONFIG_0_REGISTER) self._write_register(_PAGE_REGISTER, 0x00) - return bin(0b00000111 & value) + return 0b00000111 & value @gyro_range.setter def gyro_range(self, rng=GYRO_2000_DPS): @@ -475,7 +475,7 @@ def gyro_bandwidth(self): self._write_register(_PAGE_REGISTER, 0x01) value = self._read_register(_GYRO_CONFIG_0_REGISTER) self._write_register(_PAGE_REGISTER, 0x00) - return bin(0b00111000 & value) + return 0b00111000 & value @gyro_bandwidth.setter def gyro_bandwidth(self, bandwidth=GYRO_32HZ): @@ -495,7 +495,7 @@ def gyro_mode(self): self._write_register(_PAGE_REGISTER, 0x01) value = self._read_register(_GYRO_CONFIG_1_REGISTER) self._write_register(_PAGE_REGISTER, 0x00) - return bin(0b00000111 & value) + return 0b00000111 & value @gyro_mode.setter def gyro_mode(self, mode=GYRO_NORMAL_MODE): @@ -515,7 +515,7 @@ def magnet_rate(self): self._write_register(_PAGE_REGISTER, 0x01) value = self._read_register(_MAGNET_CONFIG_REGISTER) self._write_register(_PAGE_REGISTER, 0x00) - return bin(0b00000111 & value) + return 0b00000111 & value @magnet_rate.setter def magnet_rate(self, rate=MAGNET_20HZ): @@ -535,7 +535,7 @@ def magnet_operation_mode(self): self._write_register(_PAGE_REGISTER, 0x01) value = self._read_register(_MAGNET_CONFIG_REGISTER) self._write_register(_PAGE_REGISTER, 0x00) - return bin(0b00011000 & value) + return 0b00011000 & value @magnet_operation_mode.setter def magnet_operation_mode(self, mode=MAGNET_REGULAR_MODE): @@ -555,7 +555,7 @@ def magnet_power_mode(self): self._write_register(_PAGE_REGISTER, 0x01) value = self._read_register(_MAGNET_CONFIG_REGISTER) self._write_register(_PAGE_REGISTER, 0x00) - return bin(0b01100000 & value) + return 0b01100000 & value @magnet_power_mode.setter def magnet_power_mode(self, mode=MAGNET_FORCEMODE_MODE): From 8f165ab1fd607c1c09b6af550079b670652b5dae Mon Sep 17 00:00:00 2001 From: dherrada Date: Fri, 24 Jul 2020 09:23:57 -0400 Subject: [PATCH 6/6] Renamed magnet_power_mode to magnet_mode --- adafruit_bno055.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/adafruit_bno055.py b/adafruit_bno055.py index 58e2c54..46aecf6 100644 --- a/adafruit_bno055.py +++ b/adafruit_bno055.py @@ -548,7 +548,7 @@ def magnet_operation_mode(self, mode=MAGNET_REGULAR_MODE): self._write_register(_PAGE_REGISTER, 0x00) @property - def magnet_power_mode(self): + def magnet_mode(self): """ Switch the magnetometer power mode and return the new mode. Default value: Forced See table 3-10 in the datasheet. """ @@ -557,8 +557,8 @@ def magnet_power_mode(self): self._write_register(_PAGE_REGISTER, 0x00) return 0b01100000 & value - @magnet_power_mode.setter - def magnet_power_mode(self, mode=MAGNET_FORCEMODE_MODE): + @magnet_mode.setter + def magnet_mode(self, mode=MAGNET_FORCEMODE_MODE): if self.mode in [0x08, 0x09, 0x0A, 0x0B, 0x0C]: raise RuntimeError("Mode must not be a fusion mode") self._write_register(_PAGE_REGISTER, 0x01)