Перейти к содержанию

Гироскоп-Акселерометр

Модуль гироскопа и акселерометра — это миниатюрное устройство, объединяющее два важных датчика: 3-осевой акселерометр (измеряет линейное движение) и 3-осевой гироскоп (измеряет вращение). Широко используется в робототехнике, дронах, смартфонах и игровых контроллерах для обнаружения движения и ориентации.


Базовое использование


GyroAccel(slot)

Чтобы создать объект GyroAccel, вызовите GyroAccel(slot).

Вы можете выбрать любой другой слот (кроме "C", так как он не поддерживает связь по I2C).

Аргументы:

  • slot (string | int | tuple) — метка слота ("A", "B", "D", "E", "F", "G", "H"), порт пина (0, 2 и т.д.), кортеж (0, Pin.IN)

Возвращает: Возвращает объект MPU6050 для slot. В старых наборах PiBody может быть LSM6DS3 с устаревшими функциями.

from pibody import GyroAccel

imu = GyroAccel("A")

.read() -> (float, tuple, tuple)

Возвращает словарь со следующими ключами:

  • temp (float) — температура в °C [-40, 85]
  • accel (float, float, float) — ускорение в g [-2, 2] в виде кортежа (ax, ay, az)
  • gyro (float, float, float) — угловая скорость в °/с [-250, 250] в виде кортежа (gx, gy, gz)
from pibody import GyroAccel
imu = GyroAccel('A')

data = imu.read()

print(data)

.read_accel() -> (float, float, float)

Возвращает ускорение в g [-2, 2].

from pibody import GyroAccel
imu = GyroAccel('A')

x, y, z = imu.read_accel()
print(x, y, z)

.read_gyro() -> (float, float, float)

Возвращает угловую скорость в °/с [-250, 250].

from pibody import GyroAccel
imu = GyroAccel('A')

x, y, z = imu.read_gyro()
print(x, y, z)

.read_temperature() -> float

Возвращает температуру в °C [-40, 85].

from pibody import GyroAccel
imu = GyroAccel('A')

temp = imu.read_temperature()
print(temp)

Другие функции


.sleep()

Переводит датчик в режим сна.

imu.sleep()

.wake()

Пробуждает датчик из режима сна.

imu.wake()

.add_tilt_listener(direction, callback)

Регистрирует callback для направления наклона.

Аргументы:

  • direction (string) — одно из "forward", "backward", "left", "right"
  • callback — вызываемый объект без аргументов, вызываемый при обнаружении наклона

Вызывает: - ValueError: Если direction не является одной из четырёх допустимых строк.

imu.add_tilt_listener('forward', cb)

.check_tilt()

Читает акселерометр и запускает все зарегистрированные callback'и наклона.

Должен вызываться периодически из основного цикла.

from pibody import GyroAccel
from time import sleep

imu = GyroAccel('A')

forward = lambda: print('вперёд')
backward = lambda: print('назад')
left = lambda: print('влево')
right = lambda: print('вправо')

imu.add_tilt_listener('forward', forward)
imu.add_tilt_listener('backward', backward)
imu.add_tilt_listener('left', left)
imu.add_tilt_listener('right', right)

while True:
    imu.check_tilt()
    sleep(0.1)