lsm6dsox — LSM6DSOX 6-axlig IMU

Drivrutin för ST:s iNEMO 6-axliga tröghetsmätningsenhet LSM6DSOX (3-axlig accelerometer plus 3-axligt gyroskop) över I2C eller SPI. Utöver den grundläggande IMU-utmatningen exponerar drivrutinen de inbyggda funktionerna på chipet: en konfigurerbar stegräknare (pedometer) och Machine Learning Core (MLC), som kan programmeras via UCF-filer exporterade från ST:s Unico-GUI-verktyg.

Exempel:

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)

Klasser

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)

Skapar en LSM6DSOX-instans. Busstypen detekteras automatiskt: om bus exponerar readfrom_mem behandlas den som en machine.I2C, annars behandlas den som en machine.SPI och cs måste anges. Chipet mjukåterställs, det begärda ODR och skalan programmeras, och en MLC UCF-fil laddas om den anges.

bus

Antingen en konfigurerad machine.I2C- eller machine.SPI-buss.

cs

Chip-select-machine.Pin som används i SPI-läge. Krävs när bus är en SPI-instans, ignoreras annars.

address

7-bitars I2C-adress för enheten. Är som standard 0x6A; vissa kort drar SDO-stiftet högt vilket väljer 0x6B.

gyro_odr

Gyroskopets utdatahastighet i Hz. Måste vara en av 0 (av), 1.6, 3.33, 6.66, 12.5, 26, 52, 104, 208, 416 eller 888.

accel_odr

Accelerometerns utdatahastighet i Hz. Samma uppsättning värden som gyro_odr.

gyro_scale

Gyroskopets fullskaleområde i grader per sekund. Måste vara en av 250, 500, 1000 eller 2000.

accel_scale

Accelerometerns fullskaleområde i g. Måste vara en av 2, 4, 8 eller 16.

ucf

Valfri sökväg till en .ucf-registerdumpfil från ST Unico-GUI. Om den anges tolkas filen och tillämpas på MLC under konstruktionen via load_mlc().

reset() None

Utför en mjukvaruåterställning via CTRL3_C och blockerar tills återställningsbiten nollställs. Genererar OSError om enheten inte återkommer inom tio försök.

set_mem_bank(bank: int) None

Växlar registerbanken FUNC_CFG. Används internt för att komma åt registersidorna för inbyggda funktioner och sensorhubben; behövs sällan av applikationskod.

set_embedded_functions(enable: bool, emb_ab: tuple[int, int] | None = None) tuple[int, int]

Aktiverar eller inaktiverar blocket för inbyggda funktioner. När enable är True skrivs den två byte stora emb_ab-tupeln till EMB_FUNC_EN_A/EMB_FUNC_EN_B. När False läses de aktuella värdena, aktiveringsbitarna för MLC/pedometer nollställs, och de tidigare värdena returneras så att de kan återställas senare.

load_mlc(ucf: str) None

Tillämpar ett MLC UCF-program från filen på sökvägen ucf. Drivrutinen går igenom filen rad för rad, utför varje Ac <reg> <val>-skrivning, aktiverar sedan BDU, dirigerar MLC-händelser till avbrottsstift 1 och slår på de inbyggda funktionerna igen.

mlc_output() bytes | None

Om nya MLC-resultat är tillgängliga (biten MLC_STATUS är satt) returneras innehållet i de åtta registren MLC0_SRC..MLC7_SRC som ett bytes-liknande objekt. Annars returneras None.

pedometer_config(enable: bool = True, debounce: int = 10, int1_enable: bool = False, int2_enable: bool = False) None

Konfigurerar den inbyggda stegräknaren.

enable

Aktiverar eller inaktiverar stegdetektering på blocket för inbyggda funktioner.

debounce

Värde för stegavstudsning som skrivs in i PEDO_DEB_STEPS_CONF.

int1_enable

Om True dirigeras stegräknarhändelser till INT1-stiftet.

int2_enable

Om True dirigeras stegräknarhändelser till INT2-stiftet.

pedometer_reset() None

Återställer stegräknaren till noll.

steps() int

Returnerar det aktuella värdet för den 16-bitars stegräknaren.

gyro() tuple[float, float, float]

Returnerar gyroskopvektorn (x, y, z) i grader per sekund.

accel() tuple[float, float, float]

Returnerar accelerationsvektorn (x, y, z) i enheter av standardtyngdacceleration (1 g = 9,81 m/s²).