Class PWM
- java.lang.Object
-
- edu.wpi.first.wpilibj.MotorSafety
-
- edu.wpi.first.wpilibj.PWM
-
- All Implemented Interfaces:
Sendable,AutoCloseable
- Direct Known Subclasses:
PWMSpeedController,Servo
public class PWM extends MotorSafety implements Sendable, AutoCloseable
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 .5ms) - 0 = disabled (i.e. PWM output is held low)
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classPWM.PeriodMultiplierRepresents the amount to multiply the minimum servo-pulse pwm period by.
-
Constructor Summary
Constructors Constructor Description PWM(int channel)Allocate a PWM given a channel.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddChild(Object child)Add a child component.voidclose()Free the resource associated with the PWM channel and set the value to 0.voidenableDeadbandElimination(boolean eliminateDeadband)Optionally eliminate the deadband from a speed controller.intgetChannel()Gets the channel number associated with the PWM Object.StringgetDescription()StringgetName()Gets the name of thisSendableobject.doublegetPosition()Get the PWM value in terms of a position.intgetRaw()Get the PWM value directly from the hardware.PWMConfigDataResultgetRawBounds()Gets the bounds on the PWM pulse widths.doublegetSpeed()Get the PWM value in terms of speed.StringgetSubsystem()Gets the subsystem name of thisSendableobject.voidinitSendable(SendableBuilder builder)Initializes thisSendableobject.voidsetBounds(double max, double deadbandMax, double center, double deadbandMin, double min)Set the bounds on the PWM pulse widths.voidsetDisabled()Temporarily disables the PWM output.voidsetName(String name)Sets the name of thisSendableobject.protected voidsetName(String moduleType, int channel)Sets the name of the sensor with a channel number.protected voidsetName(String moduleType, int moduleNumber, int channel)Sets the name of the sensor with a module and channel number.voidsetPeriodMultiplier(PWM.PeriodMultiplier mult)Slow down the PWM signal for old devices.voidsetPosition(double pos)Set the PWM value based on a position.voidsetRaw(int value)Set the PWM value directly to the hardware.voidsetSpeed(double speed)Set the PWM value based on a speed.voidsetSubsystem(String subsystem)Sets the subsystem name of thisSendableobject.protected voidsetZeroLatch()voidstopMotor()-
Methods inherited from class edu.wpi.first.wpilibj.MotorSafety
check, checkMotors, feed, getExpiration, isAlive, isSafetyEnabled, setExpiration, setSafetyEnabled
-
-
-
-
Method Detail
-
close
public void close()
Free the resource associated with the PWM channel and set the value to 0.- Specified by:
closein interfaceAutoCloseable
-
getName
public final String getName()
Description copied from interface:SendableGets the name of thisSendableobject.
-
setName
public final void setName(String name)
Description copied from interface:SendableSets the name of thisSendableobject.
-
setName
protected final void setName(String moduleType, int channel)
Sets the name of the sensor with a channel number.- Parameters:
moduleType- A string that defines the module name in the label for the valuechannel- The channel number the device is plugged into
-
setName
protected final void setName(String moduleType, int moduleNumber, int channel)
Sets the name of the sensor with a module and channel number.- Parameters:
moduleType- A string that defines the module name in the label for the valuemoduleNumber- The number of the particular module typechannel- The channel number the device is plugged into (usually PWM)
-
getSubsystem
public final String getSubsystem()
Description copied from interface:SendableGets the subsystem name of thisSendableobject.- Specified by:
getSubsystemin interfaceSendable- Returns:
- Subsystem name
-
setSubsystem
public final void setSubsystem(String subsystem)
Description copied from interface:SendableSets the subsystem name of thisSendableobject.- Specified by:
setSubsystemin interfaceSendable- Parameters:
subsystem- subsystem name
-
addChild
protected final void addChild(Object child)
Add a child component.- Parameters:
child- child component
-
stopMotor
public void stopMotor()
- Specified by:
stopMotorin classMotorSafety
-
getDescription
public String getDescription()
- Specified by:
getDescriptionin classMotorSafety
-
enableDeadbandElimination
public void enableDeadbandElimination(boolean eliminateDeadband)
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.
-
setBounds
public void setBounds(double max, double deadbandMax, double center, double deadbandMin, double min)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 msdeadbandMax- The high end of the deadband range pulse width in mscenter- The center (off) pulse width in msdeadbandMin- The low end of the deadband pulse width in msmin- The minimum pulse width in ms
-
getRawBounds
public PWMConfigDataResult getRawBounds()
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.
-
getChannel
public int getChannel()
Gets the channel number associated with the PWM Object.- Returns:
- The channel number.
-
setPosition
public void setPosition(double pos)
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
- SetMaxPositivePwm() called., SetMinNegativePwm() called.
-
getPosition
public double 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
- SetMaxPositivePwm() called., SetMinNegativePwm() called.
-
setSpeed
public void setSpeed(double speed)
Set the PWM value based on a speed.This is intended to be used by speed controllers.
- Parameters:
speed- The speed to set the speed controller between -1.0 and 1.0.- Pre-Condition
- SetMaxPositivePwm() called., SetMinPositivePwm() called., SetCenterPwm() called., SetMaxNegativePwm() called., SetMinNegativePwm() called.
-
getSpeed
public double getSpeed()
Get the PWM value in terms of speed.This is intended to be used by speed controllers.
- Returns:
- The most recently set speed between -1.0 and 1.0.
- Pre-Condition
- SetMaxPositivePwm() called., SetMinPositivePwm() called., SetMaxNegativePwm() called., SetMinNegativePwm() called.
-
setRaw
public void setRaw(int value)
Set the PWM value directly to the hardware.Write a raw value to a PWM channel.
- Parameters:
value- Raw PWM value. Range 0 - 255.
-
getRaw
public int getRaw()
Get the PWM value directly from the hardware.Read a raw value from a PWM channel.
- Returns:
- Raw PWM control value. Range: 0 - 255.
-
setDisabled
public void setDisabled()
Temporarily disables the PWM output. The next set call will reenable the output.
-
setPeriodMultiplier
public void setPeriodMultiplier(PWM.PeriodMultiplier mult)
Slow down the PWM signal for old devices.- Parameters:
mult- The period multiplier to apply to this channel
-
setZeroLatch
protected void setZeroLatch()
-
initSendable
public void initSendable(SendableBuilder builder)
Description copied from interface:SendableInitializes thisSendableobject.- Specified by:
initSendablein interfaceSendable- Parameters:
builder- sendable builder
-
-