lsm6dsox_mlc.py

# هذا العمل مرخص بموجب ترخيص MIT.
# حقوق النشر (c) 2013-2023 OpenMV LLC. جميع الحقوق محفوظة.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# مثال نواة التعلم الآلي (MLC) لوحدة القياس بالقصور الذاتي LSM6DSOX.
# قم بتنزيل ملف UCF الخام، وانسخه إلى وحدة التخزين، وأعد الضبط.

# ملاحظة: يمكن إيجاد النماذج المدرَّبة مسبقًا (ملفات UCF) للأمثلة هنا:
# https://github.com/STMicroelectronics/STMems_Machine_Learning_Core/tree/master/application_examples/lsm6dsox

from machine import Pin
from machine import SPI
from lsm6dsox import LSM6DSOX

INT_MODE = True  # التشغيل في وضع المقاطعة (interrupt).
INT_FLAG = False  # تعيينها إلى True عند حدوث المقاطعة.


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"}
# ملاحظة: يجب أن يتطابق معدل البيانات والنطاق المحدد مع معدل بيانات ونطاق MLC.
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,
)

# مثال إيماءات الرأس
# UCF_FILE = "lsm6dsox_head_gestures.ucf"
# UCF_LABELS = {0:"Nod", 1:"Shake", 2:"Stationary", 3:"Swing", 4:"Walk"}
# ملاحظة: يجب أن يتطابق معدل البيانات والنطاق المحدد مع معدل بيانات ونطاق MLC.
# lsm = LSM6DSOX(SPI(5), cs_pin=Pin("PF6", Pin.OUT_PP, Pin.PULL_UP),
#        gyro_odr=26, accel_odr=26, gyro_scale=250, accel_scale=2, 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]])

results matching ""

    No results matching ""