# class Servo – 3-wire hobby servo driver

Servo objects control standard hobby servo motors with 3-wires (ground, power, signal).

Example usage:

    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)

Note

The Servo objects use Timer(5) to produce the PWM output. You can use Timer(5) for Servo control, or your own purposes, but not both at the same time.

## Constructors

class pyb.Servo(id)

  Create a servo object. `id` is 1-3, and corresponds to pins P7 through P9.

## Methods

Servo.angle([angle, time=0])

  If no arguments are given, this function returns the current angle.

  If arguments are given, this function sets the angle of the servo:

  > - `angle` is the angle to move to in degrees.

  > - `time` is the number of milliseconds to take to get to the specified angle. If omitted, then the servo moves as quickly as possible to its new position.

Servo.speed([speed, time=0])

  If no arguments are given, this function returns the current speed.

  If arguments are given, this function sets the speed of the servo:

  > - `speed` is the speed to change to, between -100 and 100.

  > - `time` is the number of milliseconds to take to get to the specified speed. If omitted, then the servo accelerates as quickly as possible.

Servo.pulse_width([value])

  If no arguments are given, this function returns the current raw pulse-width value.

  If an argument is given, this function sets the raw pulse-width value.

Servo.calibration([pulse_min, pulse_max, pulse_centre[, pulse_angle_90, pulse_speed_100]])

  If no arguments are given, this function returns the current calibration data, as a 5-tuple.

  If arguments are given, this function sets the timing calibration:

  > - `pulse_min` is the minimum allowed pulse width.

  > - `pulse_max` is the maximum allowed pulse width.

  > - `pulse_centre` is the pulse width corresponding to the centre/zero position.

  > - `pulse_angle_90` is the pulse width corresponding to 90 degrees.

  > - `pulse_speed_100` is the pulse width corresponding to a speed of 100.

Language and External Links

Language
  English
  中文

External links
  openmv.io
  forums.openmv.io
  github.com/openmv/openmv
  micropython.org
  forum.micropython.org
  github.com/micropython/micropython