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.