lsm6dsox — LSM6DSOX 6 tengelyes IMU¶
Illesztőprogram az ST LSM6DSOX iNEMO 6 tengelyes inerciális mérőegységhez (3 tengelyes gyorsulásmérő plusz 3 tengelyes giroszkóp) I2C-n vagy SPI-n keresztül. Az alapvető IMU-kimeneten túl az illesztőprogram a chipbe ágyazott funkciókat is kínálja: egy konfigurálható lépésszámlálót (pedométert) és a Machine Learning Core-t (MLC), amely az ST Unico-GUI eszközéből exportált UCF fájlokkal programozható.
Példa:
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)
Osztályok¶
- 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)¶
Létrehoz egy
LSM6DSOXpéldányt. A busz típusa automatikusan felismerésre kerül: ha abusrendelkezikreadfrom_memmetódussal, akkormachine.I2Cbuszként kezeli, ellenkező esetbenmachine.SPIbuszként, és acslábat meg kell adni. A chip szoftveres újraindításra kerül, a kért ODR és skála beprogramozásra kerül, és egy MLC UCF fájl betöltődik, ha meg van adva.busEgy beállított
machine.I2Cvagymachine.SPIbusz.csSPI módban használt chipkiválasztó
machine.Pin. Kötelező, ha abusegy SPI példány, egyébként figyelmen kívül hagyva.addressAz eszköz 7 bites I2C-címe. Alapértelmezett értéke
0x6A; egyes lapok magasra kötik az SDO lábat, ami a0x6Bcímet választja ki.gyro_odrA giroszkóp kimeneti adatsebessége Hz-ben. A következők egyikének kell lennie:
0(ki),1.6,3.33,6.66,12.5,26,52,104,208,416vagy888.accel_odrA gyorsulásmérő kimeneti adatsebessége Hz-ben. Ugyanaz az értékkészlet, mint a
gyro_odresetében.gyro_scaleA giroszkóp teljes mérési tartománya fok/másodpercben. A következők egyikének kell lennie:
250,500,1000vagy2000.accel_scaleA gyorsulásmérő teljes mérési tartománya g-ben. A következők egyikének kell lennie:
2,4,8vagy16.ucfEgy ST Unico-GUI
.ucfregiszterkiíratási fájl opcionális elérési útja. Ha meg van adva, a fájl feldolgozásra kerül, és a létrehozás során az MLC-re alkalmazódik aload_mlc()révén.
- reset() None¶
Szoftveres újraindítást kezdeményez a
CTRL3_Cregiszteren keresztül, és blokkol, amíg az újraindítási bit törlődik.OSErrorkivételt vált ki, ha az eszköz tíz újrapróbálkozáson belül nem tér vissza.
- set_mem_bank(bank: int) None¶
Átkapcsolja a FUNC_CFG regiszterbankot. Belsőleg használatos a beágyazott funkciók és az érzékelőhub regiszteroldalainak eléréséhez; alkalmazáskódban ritkán szükséges.
- set_embedded_functions(enable: bool, emb_ab: tuple[int, int] | None = None) tuple[int, int]¶
Engedélyezi vagy letiltja a beágyazott funkciók blokkját. Ha az
enableértékeTrue, a két bájtosemb_abrendezett pár azEMB_FUNC_EN_A/EMB_FUNC_EN_Bregiszterekbe kerül. HaFalse, az aktuális értékek beolvasódnak, az MLC/pedométer engedélyező bitek törlődnek, és a korábbi értékek visszaadásra kerülnek, hogy később vissza lehessen állítani őket.
- load_mlc(ucf: str) None¶
Egy MLC UCF programot alkalmaz az
ucfelérési úton lévő fájlból. Az illesztőprogram soronként végighalad a fájlon, alkalmazza az egyesAc <reg> <val>írásokat, majd engedélyezi a BDU-t, az MLC eseményeket az 1-es megszakítási lábra irányítja, és visszakapcsolja a beágyazott funkciókat.
- mlc_output() bytes | None¶
Ha új MLC eredmények érhetők el (
MLC_STATUSbit beállítva), visszaadja a nyolcMLC0_SRC..MLC7_SRCregiszter tartalmát bájtszerű objektumként. Ellenkező esetbenNoneértéket ad vissza.
- pedometer_config(enable: bool = True, debounce: int = 10, int1_enable: bool = False, int2_enable: bool = False) None¶
Konfigurálja a beágyazott lépésszámlálót.
enableEngedélyezi vagy letiltja a lépésészlelést a beágyazott funkciók blokkján.
debounceA
PEDO_DEB_STEPS_CONFregiszterbe írt lépéspergésmentesítési érték.int1_enableHa
True, a lépésszámláló eseményeit azINT1lábra irányítja.int2_enableHa
True, a lépésszámláló eseményeit azINT2lábra irányítja.