Encoder#

Introduction#

The encoder class is used with the Optical Shaft Encoder, which measures the rotational position and speed of a shaft. It uses internal optical sensors to detect how far and how fast the shaft turns, making it useful for tracking wheel rotation, arm position, or other mechanisms.

The VEX Optical Shaft Encoder.

Class Constructor#

encoder(
  triport::port &port );

Class Destructor#

Destroys the encoder object and releases associated resources.

virtual ~encoder();

Parameters#

Parameter

Type

Description

port

triport::port &

The first 3-Wire Port of a required two-port group used by the Optical Shaft Encoder. The encoder occupies two adjacent ports (A–B, C–D, E–F, or G–H) on either the Brain or a 3-Wire Expander. Specify the first port in the pair (A, C, E, or G), written as Brain.ThreeWirePort.X or ExpanderName.X where X is the port letter (for example, Brain.ThreeWirePort.A or Expander1.C).

Examples#

// Create an encoder instance in Ports A and B
encoder EncoderA = encoder(Brain.ThreeWirePort.A);

Member Functions#

The encoder class includes the following member functions:

  • setPosition — Sets the encoder’s current position to a specified value.

  • position — Returns how far the encoder has rotated.

  • velocity — Returns the current rotational velocity of the encoder.

Before calling any encoder member functions, a encoder instance must be created, as shown below:

/* This constructor is required when using VS Code.
Encoder configuration is generated automatically
in VEXcode using the Device Menu. Replace the values
as needed. */

// Create an encoder instance in Ports A and B
encoder EncoderA = encoder(Brain.ThreeWirePort.A);

setPosition#

Sets the encoder’s current position to a specified value. This can be used to manually set the tracked position without rotating a motor or other mechanism.

Available Functions
void setPosition(
  double        value,
  rotationUnits units);

Parameters

Parameters

Type

Description

value

double

The rotational position to set.

units

rotationUnits

The unit that represents the position:

  • deg / degrees — degrees
  • turns / rev — revolutions

Return Values

This function does not return a value.

position#

Returns how far the shaft connected to the encoder has rotated.

Available Functions
double position(
  rotationUnits units );

Parameters

Parameters

Type

Description

units

rotationUnits

The unit that represents the position:

  • deg / degrees — degrees
  • turns / rev — revolutions

Return Values

Returns a double representing the rotation in the specified units.

velocity#

Returns the rotational velocity of the encoder.

Available Functions
double velocity(
  velocityUnits units );

Parameters

Parameters

Type

Description

units

velocityUnits

The unit used to represent the velocity:

  • percent / pct — percent
  • rpm — rotations per minute
  • dps — degrees per second

Return Values

Returns a double representing the velocity in the specified units.