класс Servo – драйвер 3-проводного хобби-сервопривода

Объекты Servo управляют стандартными хобби-сервоприводами с 3 проводами (земля, питание, сигнал).

Пример использования:

import pyb

s1 = pyb.Servo(1)   # create a servo object on position P7
s2 = pyb.Servo(2)   # create a servo object on position P8

s1.angle(45)        # move servo 1 to 45 degrees
s2.angle(0)         # move servo 2 to 0 degrees

# move servo1 and servo2 synchronously, taking 1500ms
s1.angle(-60, 1500)
s2.angle(30, 1500)

Примечание

Объекты Servo используют Timer(5) для генерации выхода PWM. Вы можете использовать Timer(5) для управления сервоприводом или для собственных целей, но не для того и другого одновременно.

Конструкторы

class pyb.Servo(id: int)

Создаёт объект сервопривода. id — это номер канала сервопривода, начинающийся с 1; каждый канал подключён к фиксированному выводу разъёма, а количество каналов зависит от OpenMV Cam:

Камера

Servo(1)

Servo(2)

Servo(3)

OpenMV Cam M7 / H7

P7

P8

P9

OpenMV Cam M4 / H7 Plus / Pure Thermal

P7

P8

pyb.Servo недоступен на OpenMV Cam N6.

Методы

angle(angle: int | None = None, time: int = 0) int | None

Если аргументы не заданы, эта функция возвращает текущий угол.

Если аргументы заданы, эта функция задаёт угол сервопривода:

  • angle — это угол в градусах, на который нужно переместиться.

  • time — это количество миллисекунд, за которое нужно достичь заданного угла. Если опущено, то сервопривод перемещается в новое положение настолько быстро, насколько это возможно.

speed(speed: int | None = None, time: int = 0) int | None

Если аргументы не заданы, эта функция возвращает текущую скорость.

Если аргументы заданы, эта функция задаёт скорость сервопривода:

  • speed — это скорость, на которую нужно перейти, от -100 до 100.

  • time — это количество миллисекунд, за которое нужно достичь заданной скорости. Если опущено, то сервопривод разгоняется настолько быстро, насколько это возможно.

pulse_width(value: int | None = None) int | None

Если аргументы не заданы, эта функция возвращает текущее сырое значение ширины импульса.

Если задан аргумент, эта функция задаёт сырое значение ширины импульса.

calibration(pulse_min: int | None = None, pulse_max: int | None = None, pulse_centre: int | None = None, pulse_angle_90: int | None = None, pulse_speed_100: int | None = None) Tuple[int, int, int, int, int] | None

Если аргументы не заданы, эта функция возвращает текущие данные калибровки в виде 5-элементного кортежа.

Если аргументы заданы, эта функция задаёт калибровку таймингов:

  • pulse_min — это минимально допустимая ширина импульса.

  • pulse_max — это максимально допустимая ширина импульса.

  • pulse_centre — это ширина импульса, соответствующая центральному/нулевому положению.

  • pulse_angle_90 — это ширина импульса, соответствующая 90 градусам.

  • pulse_speed_100 — это ширина импульса, соответствующая скорости 100.