PWM

class wpilib.PWM(channel: int, registerSendable: bool = True)

Bases: Sendable

Class implements the PWM generation in the FPGA.

The values supplied as arguments for PWM outputs range from -1.0 to 1.0. They are mapped to the microseconds to keep the pulse high, with a range of 0 (off) to 4096. Changes are immediately sent to the FPGA, and the update occurs at the next FPGA cycle (5.05ms). There is no delay.

Allocate a PWM given a channel number.

Checks channel value range and allocates the appropriate channel. The allocation is only done to help users ensure that they don’t double assign channels.

Parameters:
  • channel – The PWM channel number. 0-9 are on-board, 10-19 are on the MXP port

  • registerSendable – If true, adds this instance to SendableRegistry and LiveWindow

class PeriodMultiplier(value: int)

Bases: pybind11_object

Represents the amount to multiply the minimum servo-pulse pwm period by.

Members:

kPeriodMultiplier_1X : Don’t skip pulses. PWM pulses occur every 5.05 ms

kPeriodMultiplier_2X : Skip every other pulse. PWM pulses occur every 10.10 ms

kPeriodMultiplier_4X : Skip three out of four pulses. PWM pulses occur every 20.20 ms

kPeriodMultiplier_1X = <PeriodMultiplier.kPeriodMultiplier_1X: 1>
kPeriodMultiplier_2X = <PeriodMultiplier.kPeriodMultiplier_2X: 2>
kPeriodMultiplier_4X = <PeriodMultiplier.kPeriodMultiplier_4X: 4>
property name
property value
enableDeadbandElimination(eliminateDeadband: bool) None

Optionally eliminate the deadband from a motor controller.

Parameters:

eliminateDeadband – If true, set the motor curve on the motor controller to eliminate the deadband in the middle of the range. Otherwise, keep the full range without modifying any values.

getBounds(max: wpimath.units.microseconds, deadbandMax: wpimath.units.microseconds, center: wpimath.units.microseconds, deadbandMin: wpimath.units.microseconds, min: wpimath.units.microseconds) None

Get the bounds on the PWM values.

This gets the bounds on the PWM values for a particular each type of controller. The values determine the upper and lower speeds as well as the deadband bracket.

Parameters:
  • max – The maximum pwm value

  • deadbandMax – The high end of the deadband range

  • center – The center speed (off)

  • deadbandMin – The low end of the deadband range

  • min – The minimum pwm value

getChannel() int
getPosition() float

Get the PWM value in terms of a position.

This is intended to be used by servos.

@pre SetBounds() called.

Returns:

The position the servo is set to between 0.0 and 1.0.

getPulseTime() wpimath.units.microseconds

Get the PWM pulse time directly from the hardware.

Read a microsecond value from a PWM channel.

Returns:

Microsecond PWM control value.

getSpeed() float

Get the PWM value in terms of speed.

This is intended to be used by motor controllers.

@pre SetBounds() called.

Returns:

The most recently set speed between -1.0 and 1.0.

setAlwaysHighMode() None

Sets the PWM output to be a continuous high signal while enabled.

setBounds(max: wpimath.units.microseconds, deadbandMax: wpimath.units.microseconds, center: wpimath.units.microseconds, deadbandMin: wpimath.units.microseconds, min: wpimath.units.microseconds) None

Set the bounds on the PWM pulse widths.

This sets the bounds on the PWM values for a particular type of controller. The values determine the upper and lower speeds as well as the deadband bracket.

Parameters:
  • max – The max PWM pulse width in us

  • deadbandMax – The high end of the deadband range pulse width in us

  • center – The center (off) pulse width in us

  • deadbandMin – The low end of the deadband pulse width in us

  • min – The minimum pulse width in us

setDisabled() None

Temporarily disables the PWM output. The next set call will re-enable the output.

setPeriodMultiplier(mult: wpilib._wpilib.PWM.PeriodMultiplier) None

Slow down the PWM signal for old devices.

Parameters:

mult – The period multiplier to apply to this channel

setPosition(pos: float) None

Set the PWM value based on a position.

This is intended to be used by servos.

@pre SetBounds() called.

Parameters:

pos – The position to set the servo between 0.0 and 1.0.

setPulseTime(time: wpimath.units.microseconds) None

Set the PWM pulse time directly to the hardware.

Write a microsecond value to a PWM channel.

Parameters:

time – Microsecond PWM value.

setSpeed(speed: float) None

Set the PWM value based on a speed.

This is intended to be used by motor controllers.

@pre SetBounds() called.

Parameters:

speed – The speed to set the motor controller between -1.0 and 1.0.

setZeroLatch() None

Latches PWM to zero.