lsm6dsox — LSM6DSOX 6-akselinen IMU¶
Ajuri ST:n LSM6DSOX iNEMO 6-akseliselle inertiamittausyksikölle (3-akselinen kiihtyvyysanturi sekä 3-akselinen gyroskooppi) I2C:n tai SPI:n kautta. Perus-IMU-tulosteen lisäksi ajuri tarjoaa piirin sulautetut toiminnot: määritettävän askelmittarin (askellaskuri) sekä Machine Learning Coren (MLC), joka voidaan ohjelmoida ST:n Unico-GUI-työkalulla viedyillä UCF-tiedostoilla.
Esimerkki:
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)
Luokat¶
- 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)¶
Luo
LSM6DSOX-instanssin. Väylätyyppi tunnistetaan automaattisesti: josbustarjoaareadfrom_mem-metodin, sitä käsitelläänmachine.I2C-objektina, muutoin sitä käsitelläänmachine.SPI-objektina jacson annettava. Piiri nollataan ohjelmallisesti, pyydetyt ODR ja asteikko ohjelmoidaan, ja MLC UCF -tiedosto ladataan, jos se on annettu.busJoko määritetty
machine.I2C- taimachine.SPI-väylä.csSPI-tilassa käytettävä lohkonvalinta-
machine.Pin. Vaaditaan, kunbuson SPI-instanssi, muutoin ohitetaan.addressLaitteen 7-bittinen I2C-osoite. Oletuksena
0x6A; jotkin kortit kytkevät SDO-nastan ylös, jolloin valitaan0x6B.gyro_odrGyroskoopin lähtödatanopeus hertseinä. Täytyy olla yksi seuraavista:
0(pois),1.6,3.33,6.66,12.5,26,52,104,208,416tai888.accel_odrKiihtyvyysanturin lähtödatanopeus hertseinä. Sama arvojoukko kuin
gyro_odr.gyro_scaleGyroskoopin täysasteikkoalue asteina sekunnissa. Täytyy olla yksi seuraavista:
250,500,1000tai2000.accel_scaleKiihtyvyysanturin täysasteikkoalue g-yksikköinä. Täytyy olla yksi seuraavista:
2,4,8tai16.ucfValinnainen polku ST Unico-GUI
.ucf-rekisteridump-tiedostoon. Jos se annetaan, tiedosto jäsennetään ja sovelletaan MLC:hen luonnin aikana metodinload_mlc()avulla.
- reset() None¶
Suorittaa ohjelmallisen nollauksen rekisterin
CTRL3_Ckautta ja estyy, kunnes nollausbitti tyhjenee. NostaaOSError-poikkeuksen, jos laite ei palaa toimintaan kymmenellä uudelleenyrityksellä.
- set_mem_bank(bank: int) None¶
Vaihtaa FUNC_CFG-rekisteripankin. Käytetään sisäisesti sulautettujen toimintojen ja sensorikeskittimen rekisterisivujen käyttöön; sovelluskoodi tarvitsee tätä harvoin.
- set_embedded_functions(enable: bool, emb_ab: tuple[int, int] | None = None) tuple[int, int]¶
Ottaa käyttöön tai poistaa käytöstä sulautettujen toimintojen lohkon. Kun
enableonTrue, kaksitavuinenemb_ab-monikko kirjoitetaan rekistereihinEMB_FUNC_EN_A/EMB_FUNC_EN_B. KunFalse, nykyiset arvot luetaan, MLC:n/askelmittarin käyttöönottobitit tyhjennetään ja aiemmat arvot palautetaan, jotta ne voidaan myöhemmin palauttaa.
- load_mlc(ucf: str) None¶
Soveltaa MLC UCF -ohjelman tiedostosta polussa
ucf. Ajuri käy tiedoston läpi rivi riviltä, soveltaa jokaisenAc <reg> <val>-kirjoituksen, ottaa sitten käyttöön BDU:n, reitittää MLC-tapahtumat keskeytysnastaan 1 ja kytkee sulautetut toiminnot takaisin päälle.
- mlc_output() bytes | None¶
Jos uusia MLC-tuloksia on saatavilla (
MLC_STATUS-bitti asetettu), palauttaa kahdeksan rekisterinMLC0_SRC..MLC7_SRCsisällön tavumaisena objektina. Muutoin palauttaaNone.
- pedometer_config(enable: bool = True, debounce: int = 10, int1_enable: bool = False, int2_enable: bool = False) None¶
Määrittää sulautetun askelmittarin.
enableOttaa käyttöön tai poistaa käytöstä askeltunnistuksen sulautettujen toimintojen lohkossa.
debounceAskelten värähtelynvaimennusarvo, joka kirjoitetaan rekisteriin
PEDO_DEB_STEPS_CONF.int1_enableJos
True, reitittää askelmittarin tapahtumatINT1-nastaan.int2_enableJos
True, reitittää askelmittarin tapahtumatINT2-nastaan.