imu --- cảm biến IMU#
Mô-đun imu được dùng để đọc cảm biến IMU nằm bên dưới cảm biến camera.
Ghi chú
Cảm biến IMU (và mô-đun này) không có mặt trên tất cả các mô hình OpenMV Cam.
Khi bo mạch camera đặt nằm ngửa trên bàn:
X hướng sang phải của cảm biến camera.
Y hướng xuống dưới cảm biến camera (về phía đáy bo mạch).
Z hướng ngược chiều với cảm biến camera (vào trong bàn).
Ví dụ sử dụng -- đọc thô gia tốc kế, con quay hồi chuyển và nhiệt độ:
import imu
import time
while True:
ax, ay, az = imu.acceleration_mg()
gx, gy, gz = imu.angular_rate_mdps()
t = imu.temperature_c()
print("accel (mg) : {:8.1f} {:8.1f} {:8.1f}".format(ax, ay, az))
print("gyro (mdps): {:8.1f} {:8.1f} {:8.1f}".format(gx, gy, gz))
print("temp (degC): {:5.1f}".format(t))
time.sleep_ms(200)
Ví dụ sử dụng -- phát hiện hướng nghiêng của camera:
import imu
import time
while True:
r = imu.roll()
if abs(r - 90) < 15:
print("camera rotated left")
elif abs(r - 270) < 15:
print("camera rotated right")
elif abs(r - 180) < 15:
print("camera upside down")
else:
print("camera upright")
time.sleep_ms(100)
Các hàm#
- imu.acceleration_mg() Tuple[float, float, float]#
Trả về gia tốc cho
(x, y, z)dưới dạng tuple float tính bằng milli-g.
- imu.angular_rate_mdps() Tuple[float, float, float]#
Trả về tốc độ góc cho
(x, y, z)dưới dạng tuple float tính bằng milli-độ-trên-giây.
- imu.roll() float#
Trả về góc lăn của mô-đun camera tính bằng độ.
0 -> Camera đang đứng thẳng.
90 -> Camera bị xoay sang trái.
180 -> Camera bị lật ngược.
270 -> Camera bị xoay sang phải.
- imu.pitch() float#
Trả về góc ngẩng của mô-đun camera tính bằng độ.
0 -> Camera đang đứng thẳng.
90 -> Camera đang hướng xuống.
180 -> Camera bị lật ngược.
270 -> Camera đang hướng lên.
- imu.sleep(enable: bool) None#
enableđặt thànhTrueđưa cảm biến IMU vào chế độ ngủ.Falseđánh thức nó trở lại (mặc định).
- imu.__read_reg(addr: int, buf: bytearray | None = None) int | None#
Trả về giá trị của thanh ghi IMU tại địa chỉ
addr.Nếu
bufđược cung cấp, hàm sẽ thực hiện đọc theo khối (burst read) thay thế:len(buf)byte được đọc bắt đầu từaddrvào bộ đệm ghi được vàNoneđược trả về. Hãy dùng cách này để đọc một khối các thanh ghi liên tiếp (ví dụ toàn bộ sáu byte đầu ra của gia tốc kế) trong một giao dịch bus duy nhất.