public class PWM extends SensorBase implements LiveWindowSendable
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. 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)
Modifier and Type | Class and Description |
---|---|
static class |
PWM.PeriodMultiplier
Represents the amount to multiply the minimum servo-pulse pwm period by.
|
kAnalogInputChannels, kAnalogOutputChannels, kDigitalChannels, kPCMModules, kPDPChannels, kPDPModules, kPwmChannels, kRelayChannels, kSolenoidChannels, kSystemClockTicksPerMicrosecond
Constructor and Description |
---|
PWM(int channel)
Allocate a PWM given a channel.
|
Modifier and Type | Method and Description |
---|---|
void |
enableDeadbandElimination(boolean eliminateDeadband)
Optionally eliminate the deadband from a speed controller.
|
void |
free()
Free the PWM channel.
|
int |
getChannel()
Gets the channel number associated with the PWM Object.
|
double |
getPosition()
Get the PWM value in terms of a position.
|
int |
getRaw()
Get the PWM value directly from the hardware.
|
PWMConfigDataResult |
getRawBounds()
Gets the bounds on the PWM pulse widths.
|
java.lang.String |
getSmartDashboardType()
The string representation of the named data type that will be used by the smart dashboard for
this
Sendable . |
double |
getSpeed()
Get the PWM value in terms of speed.
|
ITable |
getTable()
The table that is associated with this
Sendable . |
void |
initTable(ITable subtable)
Initializes a table for this
Sendable object. |
void |
setBounds(double max,
double deadbandMax,
double center,
double deadbandMin,
double 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 |
setRaw(int value)
Set the PWM value directly to the hardware.
|
void |
setRawBounds(int max,
int deadbandMax,
int center,
int deadbandMin,
int min)
Deprecated.
Recommended to set bounds in ms using
setBounds(double, double, double,
double, double) |
void |
setSpeed(double speed)
Set the PWM value based on a speed.
|
protected void |
setZeroLatch() |
void |
startLiveWindowMode()
Start having this sendable object automatically respond to value changes reflect the value on
the table.
|
void |
stopLiveWindowMode()
Stop having this sendable object automatically respond to value changes.
|
void |
updateTable()
Update the table for this sendable object with the latest values.
|
checkAnalogInputChannel, checkAnalogOutputChannel, checkDigitalChannel, checkPDPChannel, checkPDPModule, checkPWMChannel, checkRelayChannel, checkSolenoidChannel, checkSolenoidModule, getDefaultSolenoidModule, setDefaultSolenoidModule
public PWM(int channel)
channel
- The PWM channel number. 0-9 are on-board, 10-19 are on the MXP portpublic void free()
Free the resource associated with the PWM channel and set the value to 0.
free
in class SensorBase
public void enableDeadbandElimination(boolean eliminateDeadband)
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.@Deprecated public void setRawBounds(int max, int deadbandMax, int center, int deadbandMin, int min)
setBounds(double, double, double,
double, double)
max
- The Minimum pwm valuedeadbandMax
- The high end of the deadband rangecenter
- The center speed (off)deadbandMin
- The low end of the deadband rangemin
- The minimum pwm valuepublic void setBounds(double max, double deadbandMax, double center, double deadbandMin, double min)
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 mspublic PWMConfigDataResult getRawBounds()
public int getChannel()
public void setPosition(double pos)
This is intended to be used by servos.
pos
- The position to set the servo between 0.0 and 1.0.public double getPosition()
This is intended to be used by servos.
public void setSpeed(double speed)
This is intended to be used by speed controllers.
speed
- The speed to set the speed controller between -1.0 and 1.0.public double getSpeed()
This is intended to be used by speed controllers.
public void setRaw(int value)
Write a raw value to a PWM channel.
value
- Raw PWM value. Range 0 - 255.public int getRaw()
Read a raw value from a PWM channel.
public void setDisabled()
public void setPeriodMultiplier(PWM.PeriodMultiplier mult)
mult
- The period multiplier to apply to this channelprotected void setZeroLatch()
public java.lang.String getSmartDashboardType()
Sendable
Sendable
.getSmartDashboardType
in interface Sendable
Sendable
.public void initTable(ITable subtable)
Sendable
Sendable
object.public void updateTable()
LiveWindowSendable
updateTable
in interface LiveWindowSendable
public ITable getTable()
Sendable
Sendable
.public void startLiveWindowMode()
LiveWindowSendable
startLiveWindowMode
in interface LiveWindowSendable
public void stopLiveWindowMode()
LiveWindowSendable
stopLiveWindowMode
in interface LiveWindowSendable