lsm6dsox --- IMU 6-sumbu LSM6DSOX¶
Driver untuk unit pengukuran inersia iNEMO 6-sumbu ST LSM6DSOX (akselerometer 3-sumbu ditambah giroskop 3-sumbu) melalui I2C atau SPI. Selain keluaran IMU dasar, driver mengekspos fungsi tertanam on-chip: pedometer yang dapat dikonfigurasi (penghitung langkah) dan Machine Learning Core (MLC), yang dapat diprogram melalui file UCF yang diekspor dari alat Unico-GUI ST.
Contoh:
import time
from machine import I2C
from lsm6dsox import LSM6DSOX
# Use the I2C bus the LSM6DSOX is wired to on your board.
lsm = LSM6DSOX(I2C(1))
# SPI alternative (replace cs= with your board's chip-select pin):
# from machine import SPI, Pin
# lsm = LSM6DSOX(SPI(1), cs=Pin("CS"))
while True:
print("Accelerometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*lsm.accel()))
print("Gyroscope: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*lsm.gyro()))
time.sleep_ms(100)
Kelas¶
- class lsm6dsox.LSM6DSOX(bus: machine.I2C | machine.SPI, cs: machine.Pin | None = None, address: int = 0x6A, gyro_odr: float = 104, accel_odr: float = 104, gyro_scale: int = 2000, accel_scale: int = 4, ucf: str | None = None)¶
Buat instans
LSM6DSOX. Tipe bus dideteksi secara otomatis: jikabusmengeksposreadfrom_mem, ia diperlakukan sebagaimachine.I2C, jika tidak ia diperlakukan sebagaimachine.SPIdancsharus diberikan. Chip di-reset secara lunak, ODR dan skala yang diminta diprogram, dan file UCF MLC dimuat jika disediakan.busBus
machine.I2Cataumachine.SPIyang telah dikonfigurasi.csChip-select
machine.Pinyang digunakan dalam mode SPI. Diperlukan ketikabusadalah instans SPI, diabaikan jika tidak.addressAlamat I2C 7-bit perangkat. Default ke
0x6A; beberapa board menyambungkan pin SDO ke tinggi yang memilih0x6B.gyro_odrLaju data keluaran giroskop dalam Hz. Harus salah satu dari
0(mati),1.6,3.33,6.66,12.5,26,52,104,208,416atau888.accel_odrLaju data keluaran akselerometer dalam Hz. Set nilai yang sama seperti
gyro_odr.gyro_scaleRentang skala penuh giroskop dalam derajat per detik. Harus salah satu dari
250,500,1000atau2000.accel_scaleRentang skala penuh akselerometer dalam g. Harus salah satu dari
2,4,8atau16.ucfPath opsional ke file dump register
.ucfUnico-GUI ST. Jika diberikan, file diurai dan diterapkan ke MLC selama konstruksi melaluiload_mlc().
- reset() None¶
Lakukan reset perangkat lunak melalui
CTRL3_Cdan blokir hingga bit reset bersih. MenimbulkanOSErrorjika perangkat gagal kembali dalam sepuluh percobaan ulang.
- set_mem_bank(bank: int) None¶
Beralih bank register FUNC_CFG. Digunakan secara internal untuk mengakses halaman register fungsi tertanam dan sensor-hub; jarang diperlukan oleh kode aplikasi.
- set_embedded_functions(enable: bool, emb_ab: tuple[int, int] | None = None) tuple[int, int]¶
Aktifkan atau nonaktifkan blok fungsi tertanam. Ketika
enableadalahTrue, tuple dua-byteemb_abditulis keEMB_FUNC_EN_A/EMB_FUNC_EN_B. KetikaFalse, nilai saat ini dibaca, bit enable MLC/pedometer dihapus, dan nilai sebelumnya dikembalikan sehingga dapat dipulihkan nanti.
- load_mlc(ucf: str) None¶
Terapkan program UCF MLC dari file di path
ucf. Driver membaca file baris per baris, menerapkan setiap penulisanAc <reg> <val>, kemudian mengaktifkan BDU, merutekan peristiwa MLC ke pin interupsi 1 dan mengaktifkan kembali fungsi tertanam.
- mlc_output() bytes | None¶
Jika hasil MLC baru tersedia (bit
MLC_STATUSdiset), kembalikan isi delapan registerMLC0_SRC..MLC7_SRCsebagai objek mirip bytes. Jika tidak, kembalikanNone.
- pedometer_config(enable: bool = True, debounce: int = 10, int1_enable: bool = False, int2_enable: bool = False) None¶
Konfigurasikan pedometer tertanam.
enableMengaktifkan atau menonaktifkan deteksi langkah pada blok fungsi tertanam.
debounceNilai debounce langkah yang ditulis ke
PEDO_DEB_STEPS_CONF.int1_enableJika
True, rutekan peristiwa pedometer ke pinINT1.int2_enableJika
True, rutekan peristiwa pedometer ke pinINT2.