diff options
| -rw-r--r-- | ports/nrf/boards/arduino_nano_33_ble_sense/manifest.py | 4 | ||||
| -rw-r--r-- | ports/nrf/boards/arduino_nano_33_ble_sense/modules/imu.py | 45 |
2 files changed, 49 insertions, 0 deletions
diff --git a/ports/nrf/boards/arduino_nano_33_ble_sense/manifest.py b/ports/nrf/boards/arduino_nano_33_ble_sense/manifest.py index 8396e0249..1e35ae8c4 100644 --- a/ports/nrf/boards/arduino_nano_33_ble_sense/manifest.py +++ b/ports/nrf/boards/arduino_nano_33_ble_sense/manifest.py @@ -2,3 +2,7 @@ include("$(PORT_DIR)/modules/manifest.py") require("hts221") require("lps22h") require("lsm9ds1") +require("bmm150") +require("bmi270") +require("hs3003") +freeze("./modules") diff --git a/ports/nrf/boards/arduino_nano_33_ble_sense/modules/imu.py b/ports/nrf/boards/arduino_nano_33_ble_sense/modules/imu.py new file mode 100644 index 000000000..50a36a197 --- /dev/null +++ b/ports/nrf/boards/arduino_nano_33_ble_sense/modules/imu.py @@ -0,0 +1,45 @@ +""" +IMU module for Arduino Nano BLE 33 SENSE (REV1 and REV2). + +Example usage: + +import time +import imu +from machine import Pin, I2C + +bus = I2C(1, scl=Pin(15), sda=Pin(14)) +imu = imu.IMU(bus) + +while (True): + print('Accelerometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}'.format(*imu.accel())) + print('Gyroscope: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}'.format(*imu.gyro())) + print('Magnetometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}'.format(*imu.magnet())) + print("") + time.sleep_ms(100) +""" + +import time + + +class IMU: + def __init__(self, bus): + """Initalizes Gyro, Accelerometer and Magnetometer using default values.""" + if 0x68 in bus.scan(): + from bmm150 import BMM150 + from bmi270 import BMI270 + + magnet = BMM150(bus) + self.imu = BMI270(bus, bmm_magnet=magnet) + else: + from lsm9ds1 import LSM9DS1 + + self.imu = LSM9DS1(bus) + + def gyro(self): + return self.imu.gyro() + + def accel(self): + return self.imu.accel() + + def magnet(self): + return self.imu.magnet() |
