Class PWM
- All Implemented Interfaces:
Sendable
,AutoCloseable
- Direct Known Subclasses:
Servo
public class PWM extends Object implements Sendable, AutoCloseable
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.
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
PWM.PeriodMultiplier
Represents the amount to multiply the minimum servo-pulse pwm period by. -
Constructor Summary
-
Method Summary
Modifier and Type Method Description void
close()
Free the resource associated with the PWM channel and set the value to 0.void
enableDeadbandElimination(boolean eliminateDeadband)
Optionally eliminate the deadband from a motor controller.PWMConfigDataResult
getBoundsMicroseconds()
Gets the bounds on the PWM pulse widths.int
getChannel()
Gets the channel number associated with the PWM Object.int
getHandle()
Get the underlying handle.double
getPosition()
Get the PWM value in terms of a position.int
getPulseTimeMicroseconds()
Get the PWM value directly from the hardware.double
getSpeed()
Get the PWM value in terms of speed.void
initSendable(SendableBuilder builder)
Initializes thisSendable
object.void
setAlwaysHighMode()
Sets the PWM output to be a continous high signal while enabled.void
setBoundsMicroseconds(int max, int deadbandMax, int center, int deadbandMin, int min)
Set the bounds on the PWM pulse widths.void
setDisabled()
Temporarily disables the PWM output.void
setPeriodMultiplier(PWM.PeriodMultiplier mult)
Slow down the PWM signal for old devices.void
setPosition(double pos)
Set the PWM value based on a position.void
setPulseTimeMicroseconds(int microsecondPulseTime)
Set the PWM value directly to the hardware.void
setSpeed(double speed)
Set the PWM value based on a speed.void
setZeroLatch()
-
Constructor Details
-
PWM
Allocate a PWM given a channel.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.
By default, adds itself to SendableRegistry and LiveWindow.
- Parameters:
channel
- The PWM channel number. 0-9 are on-board, 10-19 are on the MXP port
-
PWM
Allocate a PWM given a channel.- Parameters:
channel
- The PWM channel number. 0-9 are on-board, 10-19 are on the MXP portregisterSendable
- If true, adds this instance to SendableRegistry and LiveWindow
-
-
Method Details
-
close
Free the resource associated with the PWM channel and set the value to 0.- Specified by:
close
in interfaceAutoCloseable
-
enableDeadbandElimination
Optionally eliminate the deadband from a motor controller.- Parameters:
eliminateDeadband
- If true, set the motor curve for the motor controller to eliminate the deadband in the middle of the range. Otherwise, keep the full range without modifying any values.
-
setBoundsMicroseconds
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 usdeadbandMax
- The high end of the deadband range pulse width in uscenter
- The center (off) pulse width in usdeadbandMin
- The low end of the deadband pulse width in usmin
- The minimum pulse width in us
-
getBoundsMicroseconds
Gets the bounds on the PWM pulse widths. This gets 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.- Returns:
- The bounds on the PWM pulse widths.
-
getChannel
Gets the channel number associated with the PWM Object.- Returns:
- The channel number.
-
setPosition
Set the PWM value based on a position.This is intended to be used by servos.
- Parameters:
pos
- The position to set the servo between 0.0 and 1.0.- Pre-Condition
- setBoundsMicroseconds() called.
-
getPosition
Get the PWM value in terms of a position.This is intended to be used by servos.
- Returns:
- The position the servo is set to between 0.0 and 1.0.
- Pre-Condition
- setBoundsMicroseconds() called.
-
setSpeed
Set the PWM value based on a speed.This is intended to be used by motor controllers.
- Parameters:
speed
- The speed to set the motor controller between -1.0 and 1.0.- Pre-Condition
- setBoundsMicroseconds() called.
-
getSpeed
Get the PWM value in terms of speed.This is intended to be used by motor controllers.
- Returns:
- The most recently set speed between -1.0 and 1.0.
- Pre-Condition
- setBoundsMicroseconds() called.
-
setPulseTimeMicroseconds
Set the PWM value directly to the hardware.Write a microsecond pulse value to a PWM channel.
- Parameters:
microsecondPulseTime
- Microsecond pulse PWM value. Range 0 - 4096.
-
getPulseTimeMicroseconds
Get the PWM value directly from the hardware.Read a raw value from a PWM channel.
- Returns:
- Microsecond pulse PWM control value. Range: 0 - 4096.
-
setDisabled
Temporarily disables the PWM output. The next set call will re-enable the output. -
setPeriodMultiplier
Slow down the PWM signal for old devices.- Parameters:
mult
- The period multiplier to apply to this channel
-
setZeroLatch
-
setAlwaysHighMode
Sets the PWM output to be a continous high signal while enabled. -
getHandle
Get the underlying handle.- Returns:
- Underlying PWM handle
-
initSendable
Description copied from interface:Sendable
Initializes thisSendable
object.- Specified by:
initSendable
in interfaceSendable
- Parameters:
builder
- sendable builder
-