PWM

class wpilib.PWM(self: wpilib.PWM, channel: int) → None

Bases: wpilib.MotorSafety, wpilib.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 hardware dependent values, in this case 0-2000 for the FPGA. Changes are immediately sent to the FPGA, and the update occurs at the next FPGA cycle (5.005ms). There is no delay.

As of revision 0.1.10 of the FPGA, the FPGA interprets the 0-2000 values as follows: - 2000 = maximum pulse width - 1999 to 1001 = linear scaling from “full forward” to “center” - 1000 = center value - 999 to 2 = linear scaling from “center” to “full reverse” - 1 = minimum pulse width (currently 0.5ms) - 0 = disabled (i.e. PWM output is held low)

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

class PeriodMultiplier(self: wpilib._wpilib.PWM.PeriodMultiplier, value: int) → None

Bases: pybind11_builtins.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.005 ms

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

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

kPeriodMultiplier_1X = <PeriodMultiplier.kPeriodMultiplier_1X: 1>
kPeriodMultiplier_2X = <PeriodMultiplier.kPeriodMultiplier_2X: 2>
kPeriodMultiplier_4X = <PeriodMultiplier.kPeriodMultiplier_4X: 4>
property name
enableDeadbandElimination(self: wpilib.PWM, eliminateDeadband: bool) → None

Optionally eliminate the deadband from a speed controller.

Parameters

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

getChannel(self: wpilib.PWM) → int
getDescription(self: wpilib.PWM) → str
getPosition(self: wpilib.PWM) → float

Get the PWM value in terms of a position.

This is intended to be used by servos.

@pre SetMaxPositivePwm() called. @pre SetMinNegativePwm() called.

Returns

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

getRaw(self: wpilib.PWM) → int

Get the PWM value directly from the hardware.

Read a raw value from a PWM channel.

Returns

Raw PWM control value.

getRawBounds(self: wpilib.PWM) → Tuple[int, int, int, int, int]

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 Minimum 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

getSpeed(self: wpilib.PWM) → float

Get the PWM value in terms of speed.

This is intended to be used by speed controllers.

@pre SetMaxPositivePwm() called. @pre SetMinPositivePwm() called. @pre SetMaxNegativePwm() called. @pre SetMinNegativePwm() called.

Returns

The most recently set speed between -1.0 and 1.0.

setBounds(self: wpilib.PWM, max: float, deadbandMax: float, center: float, deadbandMin: float, min: float) → 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 ms

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

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

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

  • min – The minimum pulse width in ms

setDisabled(self: wpilib.PWM) → None

Temporarily disables the PWM output. The next set call will reenable the output.

setPeriodMultiplier(self: wpilib.PWM, 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(self: wpilib.PWM, pos: float) → None

Set the PWM value based on a position.

This is intended to be used by servos.

@pre SetMaxPositivePwm() called. @pre SetMinNegativePwm() called.

Parameters

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

setRaw(self: wpilib.PWM, value: int) → None

Set the PWM value directly to the hardware.

Write a raw value to a PWM channel.

Parameters

value – Raw PWM value.

setRawBounds(self: wpilib.PWM, max: int, deadbandMax: int, center: int, deadbandMin: int, min: int) → None

Set the bounds on the PWM values.

This sets 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 Minimum 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

setSpeed(self: wpilib.PWM, speed: float) → None

Set the PWM value based on a speed.

This is intended to be used by speed controllers.

@pre SetMaxPositivePwm() called. @pre SetMinPositivePwm() called. @pre SetCenterPwm() called. @pre SetMaxNegativePwm() called. @pre SetMinNegativePwm() called.

Parameters

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

setZeroLatch(self: wpilib.PWM) → None
stopMotor(self: wpilib.PWM) → None