edu.wpi.first.wpilibj

## Class Servo

- java.lang.Object
- - edu.wpi.first.wpilibj.SensorBase
  - - edu.wpi.first.wpilibj.PWM
    - - edu.wpi.first.wpilibj.Servo

- All Implemented Interfaces:
    LiveWindowSendable, Sendable

      public class Servo
      extends PWM

  Standard hobby style servo.

  The range parameters default to the appropriate values for the Hitec HS-322HD servo provided in the FIRST Kit of Parts in 2008.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class edu.wpi.first.wpilibj.PWM

      `PWM.PeriodMultiplier`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected static double` | `kDefaultMaxServoPWM`
    `protected static double` | `kDefaultMinServoPWM`

    - ### Fields inherited from class edu.wpi.first.wpilibj.SensorBase

      `kAnalogInputChannels, kAnalogOutputChannels, kDigitalChannels, kPCMModules, kPDPChannels, kPDPModules, kPwmChannels, kRelayChannels, kSolenoidChannels, kSystemClockTicksPerMicrosecond`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Servo(int channel)` Constructor.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `double` | `get()` Get the servo position.
    `double` | `getAngle()` Get the servo angle.
    `java.lang.String` | `getSmartDashboardType()` The string representation of the named data type that will be used by the smart dashboard for this `Sendable`.
    `void` | `initTable(NetworkTable subtable)` Initializes a table for this `Sendable` object.
    `void` | `set(double value)` Set the servo position.
    `void` | `setAngle(double degrees)` Set the servo angle.
    `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.

    - ### Methods inherited from class edu.wpi.first.wpilibj.PWM

      `enableDeadbandElimination, free, getChannel, getPosition, getRaw, getRawBounds, getSpeed, setBounds, setDisabled, setPeriodMultiplier, setPosition, setRaw, setSpeed, setZeroLatch`

    - ### Methods inherited from class edu.wpi.first.wpilibj.SensorBase

      `checkAnalogInputChannel, checkAnalogOutputChannel, checkDigitalChannel, checkPDPChannel, checkPDPModule, checkPWMChannel, checkRelayChannel, checkSolenoidChannel, checkSolenoidModule, getDefaultSolenoidModule, setDefaultSolenoidModule`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### kDefaultMaxServoPWM

          protected static final double kDefaultMaxServoPWM

      See Also:
        Constant Field Values

    - #### kDefaultMinServoPWM

          protected static final double kDefaultMinServoPWM

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### Servo

          public Servo(int channel)

      Constructor.

      By default 2.4 ms is used as the maxPWM value
      By default 0.6 ms is used as the minPWM value

      Parameters:
        `channel` - The PWM channel to which the servo is attached. 0-9 are on-board, 10-19 are on the MXP port

  - ### Method Detail

    - #### set

          public void set(double value)

      Set the servo position.

      Servo values range from 0.0 to 1.0 corresponding to the range of full left to full right.

      Parameters:
        `value` - Position from 0.0 to 1.0.

    - #### get

          public double get()

      Get the servo position.

      Servo values range from 0.0 to 1.0 corresponding to the range of full left to full right.

      Returns:
        Position from 0.0 to 1.0.

    - #### setAngle

          public void setAngle(double degrees)

      Set the servo angle.

      Assume that the servo angle is linear with respect to the PWM value (big assumption, need to test).

      Servo angles that are out of the supported range of the servo simply "saturate" in that direction In other words, if the servo has a range of (X degrees to Y degrees) than angles of less than X result in an angle of X being set and angles of more than Y degrees result in an angle of Y being set.

      Parameters:
        `degrees` - The angle in degrees to set the servo.

    - #### getAngle

          public double getAngle()

      Get the servo angle.

      Assume that the servo angle is linear with respect to the PWM value (big assumption, need to test).

      Returns:
        The angle in degrees to which the servo is set.

    - #### getSmartDashboardType

          public java.lang.String getSmartDashboardType()

      Description copied from interface: `Sendable`
      The string representation of the named data type that will be used by the smart dashboard for this `Sendable`.
      Specified by:
        `getSmartDashboardType` in interface `Sendable`
      Overrides:
        `getSmartDashboardType` in class `PWM`
      Returns:
        The type of this `Sendable`.

    - #### initTable

          public void initTable(NetworkTable subtable)

      Description copied from interface: `Sendable`
      Initializes a table for this `Sendable` object.
      Specified by:
        `initTable` in interface `Sendable`
      Overrides:
        `initTable` in class `PWM`
      Parameters:
        `subtable` - The table to put the values in.

    - #### updateTable

          public void updateTable()

      Description copied from interface: `LiveWindowSendable`
      Update the table for this sendable object with the latest values.
      Specified by:
        `updateTable` in interface `LiveWindowSendable`
      Overrides:
        `updateTable` in class `PWM`

    - #### startLiveWindowMode

          public void startLiveWindowMode()

      Description copied from interface: `LiveWindowSendable`
      Start having this sendable object automatically respond to value changes reflect the value on the table.
      Specified by:
        `startLiveWindowMode` in interface `LiveWindowSendable`
      Overrides:
        `startLiveWindowMode` in class `PWM`

    - #### stopLiveWindowMode

          public void stopLiveWindowMode()

      Description copied from interface: `LiveWindowSendable`
      Stop having this sendable object automatically respond to value changes.
      Specified by:
        `stopLiveWindowMode` in interface `LiveWindowSendable`
      Overrides:
        `stopLiveWindowMode` in class `PWM`