fusion_hat.servo module

Servo motor class

Example

Simple usage:

>>> from fusion_hat.servo import Servo
>>> servo = Servo(0)
>>> servo.angle(-90)
>>> servo.angle(0)
>>> servo.angle(90)

Change the angle range:

>>> servo = Servo(0, min=0, max=180)
>>> servo.angle(0)
>>> servo.angle(180)

Add offset:

>>> servo = Servo(0, offset=10.0)
>>> servo.angle(0)
>>> servo.angle(90)
class fusion_hat.servo.Servo(channel: int, offset: float | None = 0.0, min: float | None = -90, max: float | None = 90, *args, **kwargs)[source]

Bases: PWM

Servo motor class

Parameters:
  • channel (int/str) – PWM channel number(0-14/P0-P14)

  • offset (float, optional) – offset value(-20.0~20.0), leave it None to use default offset, defaults to 0.0

  • min (float, optional) – minimum angle(-90~90), leave it None to use default min angle, defaults to -90

  • max (float, optional) – maximum angle(-90~90), leave it None to use default max angle, defaults to 90

  • *args – Pass to fusion_hat.pwm.PWM

  • **kwargs – Pass to fusion_hat.pwm.PWM

MAX_PW = 2500
MIN_PW = 500
FREQ = 50
offset(offset: float | None = None) float[source]

Set the offset of the servo motor

Parameters:

offset (float, optional) – offset value(-20.0~20.0), leave it None to get the offset value, defaults to None

Returns:

offset value(-20.0~20.0) if offset is None, else None

Return type:

float

angle(angle: float | None = None) float[source]

Get or set the angle of the servo motor

Parameters:

angle (float, optional) – angle(-90~90), leave it None to get the angle value, defaults to None

Returns:

angle(-90~90) if angle is None, else None

Return type:

float

set_raw_angle(angle: float) None[source]

Set the angle of the servo motor

Parameters:

angle (float) – angle(-90~90)