lsm9ds1 --- LSM9DS1 9 軸 IMU¶
透過 I2C 操作 ST LSM9DS1 iNEMO 慣性模組的驅動程式。LSM9DS1 將 3 軸加速度計、3 軸陀螺儀與 3 軸磁力計整合於單一封裝中;加速度計與陀螺儀共用一個 I2C 位址,而磁力計則在第二個位址上回應。此驅動程式還會啟用晶片內建的 16 層深陀螺儀/加速度計 FIFO,如此即可透過 iter_accel_gyro() 高效率地汲取最近的取樣值。
範例:
import time
from machine import Pin, I2C
from lsm9ds1 import LSM9DS1
imu = LSM9DS1(I2C(1, scl=Pin("P15"), sda=Pin("P14")))
while True:
print("Accelerometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*imu.accel()))
print("Magnetometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*imu.magnet()))
print("Gyroscope: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*imu.gyro()))
time.sleep_ms(100)
類別¶
- class lsm9ds1.LSM9DS1(bus: machine.I2C, address_imu: int = 0x6B, address_magnet: int = 0x1E, gyro_odr: float = 952, gyro_scale: int = 245, accel_odr: float = 952, accel_scale: int = 4, magnet_odr: int = 80, magnet_scale: int = 4)¶
建構一個
LSM9DS1實例,驗證兩個子裝置的 WHO_AM_I 暫存器,設定全部三個感測器,並以連續模式啟用加速度計/陀螺儀 FIFO。bus感測器所連接的已設定
machine.I2C匯流排。address_imu加速度計/陀螺儀子裝置的 7 位元 I2C 位址。預設為
0x6B。address_magnet磁力計子裝置的 7 位元 I2C 位址。預設為
0x1E。gyro_odr陀螺儀的輸出資料速率,以 Hz 為單位。必須為
0(關閉)、14.9、59.5、119、238、476或952其中之一。gyro_scale陀螺儀的全量程範圍,以每秒度數為單位。必須為
245、500或2000其中之一。accel_odr加速度計的輸出資料速率,以 Hz 為單位。與
gyro_odr為相同的數值集合。accel_scale加速度計的全量程範圍,以 g 為單位。必須為
2、4、8或16其中之一。magnet_odr磁力計的輸出資料速率,以 Hz 為單位。必須為
0.625、1.25、2.5、5、10、20、40或80其中之一。magnet_scale磁力計的全量程範圍,以高斯為單位。必須為
4、8、12或16其中之一。