lsm6dsox — 6-osiowa jednostka IMU LSM6DSOX¶
Sterownik do 6-osiowej inercyjnej jednostki pomiarowej ST LSM6DSOX iNEMO (3-osiowy akcelerometr plus 3-osiowy żyroskop) przez I2C lub SPI. Oprócz podstawowego wyjścia IMU sterownik udostępnia wbudowane funkcje układu: konfigurowalny pedometr (licznik kroków) oraz Machine Learning Core (MLC), który można programować za pomocą plików UCF wyeksportowanych z narzędzia Unico-GUI firmy ST.
Przykład:
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)
Klasy¶
- 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)¶
Tworzy instancję
LSM6DSOX. Typ magistrali jest wykrywany automatycznie: jeślibusudostępniareadfrom_mem, jest traktowany jakomachine.I2C, w przeciwnym razie jest traktowany jakomachine.SPIi należy podaćcs. Układ jest resetowany programowo, programowane są żądane ODR i skala, a jeśli podano, ładowany jest plik UCF dla MLC.busSkonfigurowana magistrala
machine.I2Clubmachine.SPI.csPin wyboru układu
machine.Pinużywany w trybie SPI. Wymagany, gdybusjest instancją SPI, w przeciwnym razie ignorowany.address7-bitowy adres I2C urządzenia. Domyślnie
0x6A; niektóre płytki podciągają pin SDO do stanu wysokiego, co wybiera0x6B.gyro_odrCzęstotliwość danych wyjściowych żyroskopu w Hz. Musi być jedną z wartości:
0(wyłączony),1.6,3.33,6.66,12.5,26,52,104,208,416lub888.accel_odrCzęstotliwość danych wyjściowych akcelerometru w Hz. Ten sam zestaw wartości co
gyro_odr.gyro_scalePełnoskalowy zakres żyroskopu w stopniach na sekundę. Musi być jedną z wartości:
250,500,1000lub2000.accel_scalePełnoskalowy zakres akcelerometru w g. Musi być jedną z wartości:
2,4,8lub16.ucfOpcjonalna ścieżka do pliku zrzutu rejestrów
.ucfz ST Unico-GUI. Jeśli podana, plik jest parsowany i stosowany do MLC podczas konstrukcji za pomocąload_mlc().
- reset() None¶
Wykonuje reset programowy przez
CTRL3_Ci blokuje do momentu wyzerowania bitu resetu. ZgłaszaOSError, jeśli urządzenie nie powróci w ciągu dziesięciu prób.
- set_mem_bank(bank: int) None¶
Przełącza bank rejestrów FUNC_CFG. Używane wewnętrznie do uzyskania dostępu do stron rejestrów wbudowanych funkcji i koncentratora sensorów; rzadko potrzebne w kodzie aplikacji.
- set_embedded_functions(enable: bool, emb_ab: tuple[int, int] | None = None) tuple[int, int]¶
Włącza lub wyłącza blok wbudowanych funkcji. Gdy
enablema wartośćTrue, dwubajtowa krotkaemb_abjest zapisywana doEMB_FUNC_EN_A/EMB_FUNC_EN_B. GdyFalse, bieżące wartości są odczytywane, bity włączające MLC/pedometr są zerowane, a poprzednie wartości są zwracane, aby można je było później przywrócić.
- load_mlc(ucf: str) None¶
Stosuje program UCF dla MLC z pliku w ścieżce
ucf. Sterownik przechodzi przez plik wiersz po wierszu, wykonuje każdy zapisAc <reg> <val>, następnie włącza BDU, kieruje zdarzenia MLC do pinu przerwań 1 i ponownie włącza wbudowane funkcje.
- mlc_output() bytes | None¶
Jeśli dostępne są nowe wyniki MLC (ustawiony bit
MLC_STATUS), zwraca zawartość ośmiu rejestrówMLC0_SRC..MLC7_SRCjako obiekt typu bytes. W przeciwnym razie zwracaNone.
- pedometer_config(enable: bool = True, debounce: int = 10, int1_enable: bool = False, int2_enable: bool = False) None¶
Konfiguruje wbudowany pedometr.
enableWłącza lub wyłącza wykrywanie kroków w bloku wbudowanych funkcji.
debounceWartość eliminacji drgań kroków zapisywana do
PEDO_DEB_STEPS_CONF.int1_enableJeśli
True, kieruje zdarzenia pedometru do pinuINT1.int2_enableJeśli
True, kieruje zdarzenia pedometru do pinuINT2.