From aaa717edb8b1bc9b3ecd6eb7451b9fb4116a394d Mon Sep 17 00:00:00 2001 From: Kattni Date: Thu, 1 Mar 2018 18:33:58 -0500 Subject: [PATCH 1/2] Update to method names and linting --- README.rst | 10 ++-- adafruit_lsm303.py | 57 ++++++++++------------- examples/fast_accel/fast_accel.py | 2 +- examples/fast_mag/fast_mag.py | 2 +- examples/raw_and_cooked/raw_and_cooked.py | 15 +++--- examples/slow_both/slow_both.py | 4 +- 6 files changed, 41 insertions(+), 49 deletions(-) diff --git a/README.rst b/README.rst index fee906d..37be849 100644 --- a/README.rst +++ b/README.rst @@ -27,7 +27,7 @@ Usage Example ============= .. code-block:: python - + import time import board import busio @@ -38,10 +38,10 @@ Usage Example sensor = adafruit_lsm303.LSM303(i2c) while True: - raw_accel_x, raw_accel_y, raw_accel_z = sensor.raw_accelerometer - accel_x, accel_y, accel_z = sensor.accelerometer - raw_mag_x, raw_mag_y, raw_mag_z = sensor.raw_magnetometer - mag_x, mag_y, mag_z = sensor.magnetometer + raw_accel_x, raw_accel_y, raw_accel_z = sensor.raw_acceleration + accel_x, accel_y, accel_z = sensor.acceleration + raw_mag_x, raw_mag_y, raw_mag_z = sensor.raw_magnetic + mag_x, mag_y, mag_z = sensor.magnetic print('Acceleration raw: ({0:6d}, {1:6d}, {2:6d}), (m/s^2): ({3:10.3f}, {4:10.3f}, {5:10.3f})'.format(raw_accel_x, raw_accel_y, raw_accel_z, accel_x, accel_y, accel_z)) print('Magnetometer raw: ({0:6d}, {1:6d}, {2:6d}), (gauss): ({3:10.3f}, {4:10.3f}, {5:10.3f})'.format(raw_mag_x, raw_mag_y, raw_mag_z, mag_x, mag_y, mag_z)) diff --git a/adafruit_lsm303.py b/adafruit_lsm303.py index 553c839..fa8723f 100644 --- a/adafruit_lsm303.py +++ b/adafruit_lsm303.py @@ -116,6 +116,8 @@ _LSM303ACCEL_MG_LSB = 16704.0 _GRAVITY_STANDARD = 9.80665 # Earth's gravity in m/s^2 _GAUSS_TO_MICROTESLA = 100.0 # Gauss to micro-Tesla multiplier +# pylint: enable=bad-whitespace + class LSM303(object): """Driver for the LSM303 accelerometer/magnetometer.""" @@ -128,33 +130,31 @@ class LSM303(object): def __init__(self, i2c): self._accel_device = I2CDevice(i2c, _ADDRESS_ACCEL) self._mag_device = I2CDevice(i2c, _ADDRESS_MAG) - self._write_u8(self._accel_device, _REG_ACCEL_CTRL_REG1_A, 0x27) # Enable the accelerometer - self._write_u8(self._mag_device, _REG_MAG_MR_REG_M, 0x00) # Enable the magnetometer + self._write_u8(self._accel_device, _REG_ACCEL_CTRL_REG1_A, 0x27) # Enable the accelerometer + self._write_u8(self._mag_device, _REG_MAG_MR_REG_M, 0x00) # Enable the magnetometer self._lsm303mag_gauss_lsb_xy = 1100.0 self._lsm303mag_gauss_lsb_z = 980.0 self._mag_gain = MAGGAIN_1_3 self._mag_rate = MAGRATE_0_7 @property - def raw_accelerometer(self): + def raw_acceleration(self): """The raw accelerometer sensor values. A 3-tuple of X, Y, Z axis values that are 16-bit signed integers. """ self._read_bytes(self._accel_device, _REG_ACCEL_OUT_X_L_A | 0x80, 6, self._BUFFER) return struct.unpack_from('hhh', self._BUFFER[0:6]) return [n >> 4 for n in raw_values] - @property - def magnetometer(self): + def magnetic(self): """The processed magnetometer sensor values. A 3-tuple of X, Y, Z axis values in microteslas that are signed floats. """ - mag_x, mag_y, mag_z = self.raw_magnetometer + mag_x, mag_y, mag_z = self.raw_magnetic return (mag_x / self._lsm303mag_gauss_lsb_xy * _GAUSS_TO_MICROTESLA, mag_y / self._lsm303mag_gauss_lsb_xy * _GAUSS_TO_MICROTESLA, mag_z / self._lsm303mag_gauss_lsb_z * _GAUSS_TO_MICROTESLA) - @property def mag_gain(self): """The magnetometer's gain.""" return self._mag_gain - @mag_gain.setter def mag_gain(self, value): - # pylint: disable=line-too-long - assert value in (MAGGAIN_1_3, MAGGAIN_1_9, MAGGAIN_2_5, MAGGAIN_4_0, MAGGAIN_4_7, MAGGAIN_5_6, MAGGAIN_8_1) - # pylint: enable=line-too-long + assert value in (MAGGAIN_1_3, MAGGAIN_1_9, MAGGAIN_2_5, MAGGAIN_4_0, MAGGAIN_4_7, + MAGGAIN_5_6, MAGGAIN_8_1) self._mag_gain = value self._write_u8(self._mag_device, _REG_MAG_CRB_REG_M, self._mag_gain) if self._mag_gain == MAGGAIN_1_3: self._lsm303mag_gauss_lsb_xy = 1100.0 - self._lsm303mag_gauss_lsb_z = 980.0 + self._lsm303mag_gauss_lsb_z = 980.0 elif self._mag_gain == MAGGAIN_1_9: self._lsm303mag_gauss_lsb_xy = 855.0 - self._lsm303mag_gauss_lsb_z = 760.0 + self._lsm303mag_gauss_lsb_z = 760.0 elif self._mag_gain == MAGGAIN_2_5: self._lsm303mag_gauss_lsb_xy = 670.0 - self._lsm303mag_gauss_lsb_z = 600.0 + self._lsm303mag_gauss_lsb_z = 600.0 elif self._mag_gain == MAGGAIN_4_0: self._lsm303mag_gauss_lsb_xy = 450.0 - self._lsm303mag_gauss_lsb_z = 400.0 + self._lsm303mag_gauss_lsb_z = 400.0 elif self._mag_gain == MAGGAIN_4_7: self._lsm303mag_gauss_lsb_xy = 400.0 - self._lsm303mag_gauss_lsb_z = 355.0 + self._lsm303mag_gauss_lsb_z = 355.0 elif self._mag_gain == MAGGAIN_5_6: self._lsm303mag_gauss_lsb_xy = 330.0 - self._lsm303mag_gauss_lsb_z = 295.0 + self._lsm303mag_gauss_lsb_z = 295.0 elif self._mag_gain == MAGGAIN_8_1: self._lsm303mag_gauss_lsb_xy = 230.0 - self._lsm303mag_gauss_lsb_z = 205.0 - + self._lsm303mag_gauss_lsb_z = 205.0 @property def mag_rate(self): """The magnetometer update rate.""" return self._mag_rate - @mag_rate.setter def mag_rate(self, value): - # pylint: disable=line-too-long - assert value in (MAGRATE_0_7, MAGRATE_1_5, MAGRATE_3_0, MAGRATE_7_5, MAGRATE_15, MAGRATE_30, MAGRATE_75, MAGRATE_220) - # pylint: enable=line-too-long + assert value in (MAGRATE_0_7, MAGRATE_1_5, MAGRATE_3_0, MAGRATE_7_5, MAGRATE_15, MAGRATE_30, + MAGRATE_75, MAGRATE_220) self._mag_rate = value reg_m = ((value & 0x07) << 2) & 0xFF self._write_u8(self._mag_device, _REG_MAG_CRA_REG_M, reg_m) - def _read_u8(self, device, address): with device as i2c: self._BUFFER[0] = address & 0xFF @@ -235,15 +227,14 @@ def _read_u8(self, device, address): i2c.readinto(self._BUFFER, end=1) return self._BUFFER[0] - def _write_u8(self, device, address, val): with device as i2c: self._BUFFER[0] = address & 0xFF self._BUFFER[1] = val & 0xFF i2c.write(self._BUFFER, end=2) - # pylint: disable=no-self-use - def _read_bytes(self, device, address, count, buf): + @staticmethod + def _read_bytes(device, address, count, buf): with device as i2c: buf[0] = address & 0xFF i2c.write(buf, end=1, stop=False) diff --git a/examples/fast_accel/fast_accel.py b/examples/fast_accel/fast_accel.py index 9160879..4e603d8 100644 --- a/examples/fast_accel/fast_accel.py +++ b/examples/fast_accel/fast_accel.py @@ -9,5 +9,5 @@ sensor = adafruit_lsm303.LSM303(i2c) while True: - accel_x, accel_y, accel_z = sensor.accelerometer + accel_x, accel_y, accel_z = sensor.acceleration print('{0:10.3f} {1:10.3f} {2:10.3f}'.format(accel_x, accel_y, accel_z)) diff --git a/examples/fast_mag/fast_mag.py b/examples/fast_mag/fast_mag.py index 02713dc..fd6ccad 100644 --- a/examples/fast_mag/fast_mag.py +++ b/examples/fast_mag/fast_mag.py @@ -8,5 +8,5 @@ sensor = adafruit_lsm303.LSM303(i2c) while True: - mag_x, mag_y, mag_z = sensor.magnetometer + mag_x, mag_y, mag_z = sensor.magnetic print('{0:10.3f} {1:10.3f} {2:10.3f}'.format(mag_x, mag_y, mag_z)) diff --git a/examples/raw_and_cooked/raw_and_cooked.py b/examples/raw_and_cooked/raw_and_cooked.py index 8d710ca..ed3ec12 100644 --- a/examples/raw_and_cooked/raw_and_cooked.py +++ b/examples/raw_and_cooked/raw_and_cooked.py @@ -1,5 +1,4 @@ """ Display both accelerometer and magnetometer data once per second """ -# pylint: disable=line-too-long import time import board @@ -11,12 +10,14 @@ sensor = adafruit_lsm303.LSM303(i2c) while True: - raw_accel_x, raw_accel_y, raw_accel_z = sensor.raw_accelerometer - accel_x, accel_y, accel_z = sensor.accelerometer - raw_mag_x, raw_mag_y, raw_mag_z = sensor.raw_magnetometer - mag_x, mag_y, mag_z = sensor.magnetometer + raw_accel_x, raw_accel_y, raw_accel_z = sensor.raw_acceleration + accel_x, accel_y, accel_z = sensor.acceleration + raw_mag_x, raw_mag_y, raw_mag_z = sensor.raw_magnetic + mag_x, mag_y, mag_z = sensor.magnetic - print('Acceleration raw: ({0:6d}, {1:6d}, {2:6d}), (m/s^2): ({3:10.3f}, {4:10.3f}, {5:10.3f})'.format(raw_accel_x, raw_accel_y, raw_accel_z, accel_x, accel_y, accel_z)) - print('Magnetometer raw: ({0:6d}, {1:6d}, {2:6d}), (gauss): ({3:10.3f}, {4:10.3f}, {5:10.3f})'.format(raw_mag_x, raw_mag_y, raw_mag_z, mag_x, mag_y, mag_z)) + print('Acceleration raw: ({0:6d}, {1:6d}, {2:6d}), (m/s^2): ({3:10.3f}, {4:10.3f}, {5:10.3f})' + .format(raw_accel_x, raw_accel_y, raw_accel_z, accel_x, accel_y, accel_z)) + print('Magnetometer raw: ({0:6d}, {1:6d}, {2:6d}), (gauss): ({3:10.3f}, {4:10.3f}, {5:10.3f})' + .format(raw_mag_x, raw_mag_y, raw_mag_z, mag_x, mag_y, mag_z)) print('') time.sleep(1.0) diff --git a/examples/slow_both/slow_both.py b/examples/slow_both/slow_both.py index fe41c02..e3de69c 100644 --- a/examples/slow_both/slow_both.py +++ b/examples/slow_both/slow_both.py @@ -9,8 +9,8 @@ sensor = adafruit_lsm303.LSM303(i2c) while True: - acc_x, acc_y, acc_z = sensor.accelerometer - mag_x, mag_y, mag_z = sensor.magnetometer + acc_x, acc_y, acc_z = sensor.acceleration + mag_x, mag_y, mag_z = sensor.magnetic print('Acceleration (m/s^2): ({0:10.3f}, {1:10.3f}, {2:10.3f})'.format(acc_x, acc_y, acc_z)) print('Magnetometer (gauss): ({0:10.3f}, {1:10.3f}, {2:10.3f})'.format(mag_x, mag_y, mag_z)) From a7135b248ce0099a346147e9d506d88b3ff0965c Mon Sep 17 00:00:00 2001 From: Kattni Date: Thu, 1 Mar 2018 18:58:24 -0500 Subject: [PATCH 2/2] update magnetic to tuple --- adafruit_lsm303.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adafruit_lsm303.py b/adafruit_lsm303.py index fa8723f..effe567 100644 --- a/adafruit_lsm303.py +++ b/adafruit_lsm303.py @@ -160,7 +160,7 @@ def raw_magnetic(self): """ self._read_bytes(self._mag_device, _REG_MAG_OUT_X_H_M, 6, self._BUFFER) raw_values = struct.unpack_from('>hhh', self._BUFFER[0:6]) - return [n >> 4 for n in raw_values] + return tuple([n >> 4 for n in raw_values]) @property def magnetic(self):