Example: 50-Arduino-Boards/Nicla-Vision/51-Sensors/lsm6dsox_mlc.py
from machine import Pin
from machine import SPI
from lsm6dsox import LSM6DSOX
INT_MODE = True
INT_FLAG = False
def imu_int_handler(pin):
global INT_FLAG
INT_FLAG = True
if INT_MODE is True:
int_pin = Pin("PA1", mode=Pin.IN, pull=Pin.PULL_UP)
int_pin.irq(handler=imu_int_handler, trigger=Pin.IRQ_RISING)
UCF_FILE = "lsm6dsox_vibration_monitoring.ucf"
UCF_LABELS = {0: "no vibration", 1: "low vibration", 2: "high vibration"}
lsm = LSM6DSOX(
SPI(5),
cs=Pin("PF6", Pin.OUT_PP, Pin.PULL_UP),
gyro_odr=26,
accel_odr=26,
gyro_scale=2000,
accel_scale=4,
ucf=UCF_FILE,
)
print("MLC configured...")
while True:
if INT_MODE:
if INT_FLAG:
INT_FLAG = False
print(UCF_LABELS[lsm.mlc_output()[0]])
else:
buf = lsm.mlc_output()
if buf is not None:
print(UCF_LABELS[buf[0]])