lsm6dsox — LSM6DSOX 6 eksenli IMU¶
ST LSM6DSOX iNEMO 6 eksenli atalet ölçüm birimi (3 eksenli ivmeölçer artı 3 eksenli jiroskop) için I2C veya SPI üzerinden sürücü. Temel IMU çıktısına ek olarak, sürücü çip üzerindeki gömülü fonksiyonları sunar: yapılandırılabilir bir adımölçer (adım sayacı) ve ST’nin Unico-GUI aracından dışa aktarılan UCF dosyaları aracılığıyla programlanabilen Machine Learning Core (MLC).
Örnek:
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)
Sınıflar¶
- 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)¶
Bir
LSM6DSOXörneği oluşturur. Veri yolu türü otomatik olarak algılanır:busreadfrom_memsunuyorsa birmachine.I2Colarak ele alınır, aksi takdirde birmachine.SPIolarak ele alınır vecssağlanmalıdır. Çip yazılımsal olarak sıfırlanır, istenen ODR ve ölçek programlanır ve sağlanmışsa bir MLC UCF dosyası yüklenir.busYapılandırılmış bir
machine.I2Cveyamachine.SPIveri yolu.csSPI modunda kullanılan çip seçimi
machine.Pin.busbir SPI örneği olduğunda gereklidir, aksi takdirde yok sayılır.addressCihazın 7 bitlik I2C adresi. Varsayılan olarak
0x6Adeğerini alır; bazı kartlar0x6Badresini seçen SDO pinini yüksek seviyeye sabitler.gyro_odrJiroskop çıktı verisi hızı, Hz cinsinden. Şunlardan biri olmalıdır:
0(kapalı),1.6,3.33,6.66,12.5,26,52,104,208,416veya888.accel_odrİvmeölçer çıktı verisi hızı, Hz cinsinden.
gyro_odrile aynı değer kümesi.gyro_scaleJiroskop tam ölçek aralığı, derece/saniye cinsinden. Şunlardan biri olmalıdır:
250,500,1000veya2000.accel_scaleİvmeölçer tam ölçek aralığı, g cinsinden. Şunlardan biri olmalıdır:
2,4,8veya16.ucfBir ST Unico-GUI
.ucfyazmaç dökümü dosyasına isteğe bağlı yol. Sağlanırsa dosya ayrıştırılır ve oluşturma sırasındaload_mlc()aracılığıyla MLC’ye uygulanır.
- reset() None¶
CTRL3_Caracılığıyla bir yazılımsal sıfırlama yayınlar ve sıfırlama biti temizlenene kadar bloke eder. Cihaz on yeniden denemede geri gelmezseOSErroryükseltir.
- set_mem_bank(bank: int) None¶
FUNC_CFG yazmaç bankasını değiştirir. Gömülü fonksiyon ve sensör hub yazmaç sayfalarına erişmek için dahili olarak kullanılır; uygulama kodu tarafından nadiren gereklidir.
- set_embedded_functions(enable: bool, emb_ab: tuple[int, int] | None = None) tuple[int, int]¶
Gömülü fonksiyon bloğunu etkinleştirir veya devre dışı bırakır.
enableTrueolduğunda iki baytlıkemb_abdemetiEMB_FUNC_EN_A/EMB_FUNC_EN_Byazmaçlarına yazılır.Falseolduğunda geçerli değerler okunur, MLC/adımölçer etkinleştirme bitleri temizlenir ve daha sonra geri yüklenebilmeleri için önceki değerler döndürülür.
- load_mlc(ucf: str) None¶
ucfyolundaki dosyadan bir MLC UCF programı uygular. Sürücü dosyada satır satır ilerler, herAc <reg> <val>yazma işlemini uygular, ardından BDU’yu etkinleştirir, MLC olaylarını kesme pini 1’e yönlendirir ve gömülü fonksiyonları tekrar açar.
- mlc_output() bytes | None¶
Yeni MLC sonuçları mevcutsa (
MLC_STATUSbiti ayarlıysa), sekizMLC0_SRC..MLC7_SRCyazmacının içeriğini bayt benzeri bir nesne olarak döndürür. Aksi takdirdeNonedöndürür.
- pedometer_config(enable: bool = True, debounce: int = 10, int1_enable: bool = False, int2_enable: bool = False) None¶
Gömülü adımölçeri yapılandırır.
enableGömülü fonksiyon bloğunda adım algılamayı etkinleştirir veya devre dışı bırakır.
debouncePEDO_DEB_STEPS_CONFyazmacına yazılan adım sıçrama önleme değeri.int1_enableTrueise, adımölçer olaylarınıINT1pinine yönlendirir.int2_enableTrueise, adımölçer olaylarınıINT2pinine yönlendirir.