lsm6dsox — 6osá IMU LSM6DSOX¶
Ovladač pro 6osou inerciální měřicí jednotku ST LSM6DSOX iNEMO (3osý akcelerometr plus 3osý gyroskop) přes I2C nebo SPI. Kromě základního výstupu IMU ovladač zpřístupňuje vestavěné funkce na čipu: konfigurovatelný pedometr (počítadlo kroků) a Machine Learning Core (MLC), který lze programovat prostřednictvím souborů UCF exportovaných z nástroje ST Unico-GUI.
Příklad:
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)
Třídy¶
- 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)¶
Vytvoří instanci
LSM6DSOX. Typ sběrnice se detekuje automaticky: pokudbusposkytujereadfrom_mem, je považována zamachine.I2C, jinak je považována zamachine.SPIa musí být zadánocs. Čip se softwarově resetuje, naprogramují se požadované ODR a měřítko a načte se soubor MLC UCF, je-li zadán.busBuď nakonfigurovaná sběrnice
machine.I2C, nebomachine.SPI.csPin výběru čipu
machine.Pinpoužitý v režimu SPI. Vyžadováno, je-libusinstancí SPI, jinak ignorováno.address7bitová I2C adresa zařízení. Výchozí hodnota je
0x6A; některé desky přivádějí pin SDO na vysokou úroveň, což volí0x6B.gyro_odrVýstupní datová rychlost gyroskopu v Hz. Musí být jedna z hodnot
0(vypnuto),1.6,3.33,6.66,12.5,26,52,104,208,416nebo888.accel_odrVýstupní datová rychlost akcelerometru v Hz. Stejná sada hodnot jako
gyro_odr.gyro_scalePlný rozsah gyroskopu ve stupních za sekundu. Musí být jedna z hodnot
250,500,1000nebo2000.accel_scalePlný rozsah akcelerometru v g. Musí být jedna z hodnot
2,4,8nebo16.ucfVolitelná cesta k souboru výpisu registrů
.ucfz ST Unico-GUI. Je-li zadána, soubor se naparsuje a během konstrukce aplikuje na MLC prostřednictvímload_mlc().
- reset() None¶
Provede softwarový reset přes
CTRL3_Ca blokuje, dokud se nevynuluje resetovací bit. VyvoláOSError, pokud se zařízení nevrátí do provozu během deseti pokusů.
- set_mem_bank(bank: int) None¶
Přepne banku registru FUNC_CFG. Používá se interně pro přístup k stránkám registrů vestavěných funkcí a sensor-hubu; v aplikačním kódu je potřeba zřídka.
- set_embedded_functions(enable: bool, emb_ab: tuple[int, int] | None = None) tuple[int, int]¶
Povolí nebo zakáže blok vestavěných funkcí. Je-li
enableTrue, dvoubajtová n-ticeemb_abse zapíše doEMB_FUNC_EN_A/EMB_FUNC_EN_B. Je-liFalse, přečtou se aktuální hodnoty, vynulují se povolovací bity MLC/pedometru a vrátí se předchozí hodnoty, aby je bylo možné později obnovit.
- load_mlc(ucf: str) None¶
Aplikuje program MLC UCF ze souboru na cestě
ucf. Ovladač prochází soubor řádek po řádku, aplikuje každý zápisAc <reg> <val>, poté povolí BDU, směruje události MLC na pin přerušení 1 a opět zapne vestavěné funkce.
- mlc_output() bytes | None¶
Pokud jsou k dispozici nové výsledky MLC (nastaven bit
MLC_STATUS), vrátí obsah osmi registrůMLC0_SRC..MLC7_SRCjako objekt typu bytes. Jinak vrátíNone.
- pedometer_config(enable: bool = True, debounce: int = 10, int1_enable: bool = False, int2_enable: bool = False) None¶
Nakonfiguruje vestavěný pedometr.
enablePovolí nebo zakáže detekci kroků v bloku vestavěných funkcí.
debounceHodnota debounce kroků zapsaná do
PEDO_DEB_STEPS_CONF.int1_enableJe-li
True, směruje události pedometru na pinINT1.int2_enableJe-li
True, směruje události pedometru na pinINT2.