Documentación offline MicroPython (Pico) master
por @raupulus

Servo

master Ver versión oficial en línea Licencia MITDescargado el 2026-09-15 Bundle .md (858 KB) ↓

En esta página

class Servo -- 3-wire hobby servo driver#

Servo objects control standard hobby servo motors with 3-wires (ground, power, signal). There are 4 positions on the pyboard where these motors can be plugged in: pins X1 through X4 are the signal pins, and next to them are 4 sets of power and ground pins.

Example usage:

import pyb

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

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#

Create a servo object. id is 1-4, and corresponds to pins X1 through X4.

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.