VEX Rotation Sensor C++ API

pros::Rotation

Constructor(s)

pros::Rotation(const std::uint8_t port)
1
2
3
4
5
#define ROTATION_PORT 1

void initialize() {
  pros::Rotation rotation_sensor(ROTATION_PORT);
}
Parameters  
port The V5 port number from 1-21

pros::Rotation(const std::uint8_t port, const bool reverse_flag)
1
2
3
4
5
#define ROTATION_PORT 1

void initialize() {
  pros::Rotation rotation_sensor(ROTATION_PORT, true);
}

Functions

reset

Reset the current absolute position to be the same as the Rotation Sensor angle.

This function uses the following values of errno when an error state is reached:

  • ENXIO - The given value is not within the range of V5 ports (1-21).
  • ENODEV - The port cannot be configured as an Rotation Sensor.
std::int32_t reset( )
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#define ROTATION_PORT 1

void opcontrol() {
  pros::Rotation rotation_sensor(ROTATION_PORT);
  while (true) {
   if(controller_get_digital(CONTROLLER_MASTER, E_CONTROLLER_DIGITAL_X)){
        rotation_sensor.reverse(); //Rotation sensor recently reversed
        rotation_sensor.reset(); //Reversal causes position to be multiplied by -1.
    }
    pros::delay(20);
  }
}
Parameters  
port The V5 port number from (1-21)

Returns: 1 if operation was successful or PROS_ERR if the operation failed, setting errno.


reset_position

Reset the Rotation Sensor position to 0.

This function uses the following values of errno when an error state is reached:

  • ENXIO - The given value is not within the range of V5 ports (1-21).
  • ENODEV - The port cannot be configured as an Rotation Sensor.
std::int32_t reset_position()
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#define ROTATION_PORT 1

void opcontrol() {
  pros::Rotation rotation_sensor(ROTATION_PORT);
  while (true) {
   if(controller_get_digital(CONTROLLER_MASTER, E_CONTROLLER_DIGITAL_X)){
        rotation_sensor.reset_position();
    }
    pros::delay(20);
  }
}
Parameters  
port The V5 port number from (1-21)

Returns: 1 if operation successful or PROS_ERR if the operation failed, setting errno.


set_reversed

Reverse the Rotation Sensor’s direction

This function uses the following values of errno when an error state is reached:

  • ENXIO - The given value is not within the range of V5 ports (1-21).
  • ENODEV - The port cannot be configured as an Rotation Sensor.
std::int32_t set_reverse(bool value)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#define ROTATION_PORT 1

void opcontrol() {
  pros::Rotation rotation_sensor(ROTATION_PORT);
  while (true) {
   if(controller_get_digital(CONTROLLER_MASTER, E_CONTROLLER_DIGITAL_X)){
        rotation_sensor.set_reversed(true);
    }
    pros::delay(20);
  }
}
Parameters  
value True or false on whether the positive direction is counter clockwise or not.

Returns: 1 if operation was successful or PROS_ERR if the operation failed, setting errno.


set_position

Set the Rotation sensor to a desired rotation value.

This function uses the following values of errno when an error state is reached:

  • ENXIO - The given value is not within the range of V5 ports (1-21).
  • ENODEV - The port cannot be configured as an Rotation Sensor.
std::int32_t set_position(std::uint32_t position)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#define ROTATION_PORT 1

void opcontrol() {
  pros::Rotation rotation_sensor(ROTATION_PORT);
  while (true) {
   if(controller_get_digital(CONTROLLER_MASTER, E_CONTROLLER_DIGITAL_X)){
        rotation_sensor.set_position(0); //sets current position to 0
    }
    pros::delay(20);
  }
}
Parameters  
position The desired position to be set in terms of hundreths of ticks

Returns: Rotation sensor position or PROS_ERR if the operation failed, setting errno.

get_position

Get the Rotation Sensor’s current position in centidegrees

This function uses the following values of errno when an error state is reached:

  • ENXIO - The given value is not within the range of V5 ports (1-21).
  • ENODEV - The port cannot be configured as an Rotation Sensor.
std::int32_t get_position( )
1
2
3
4
5
6
7
8
9
#define ROTATION_PORT 1

void opcontrol() {
  pros::Rotation rotation_sensor(ROTATION_PORT);
  while (true) {
                printf("Tick Position: %ld \n", rotation_sensor.get_position());
                pros::delay(20);
  }
}
Parameters  
port The V5 port number from (1-21)

Returns: Rotation sensor position or PROS_ERR if the operation failed, setting errno.


get_velocity

Get the Rotation Sensor’s current velocity in centidegrees per second

This function uses the following values of errno when an error state is reached:

  • ENXIO - The given value is not within the range of V5 ports (1-21).
  • ENODEV - The port cannot be configured as an Rotation Sensor.
std::int32_t get_velocity( )
1
2
3
4
5
6
7
8
9
#define ROTATION_PORT 1

void opcontrol() {
  pros::Rotation rotation_sensor(ROTATION_PORT);
  while (true) {
                printf("Rotational Velocity: %ld \n", rotation_sensor.get_velocity());
                pros::delay(20);
  }
}
Parameters  
port The V5 port number from (1-21)

Returns: Rotation sensor velocity or PROS_ERR if the operation failed, setting errno.


get_angle

Get the Rotation Sensor’s current angle in centidegrees (0-36000)

This function uses the following values of errno when an error state is reached:

  • ENXIO - The given value is not within the range of V5 ports (1-21).
  • ENODEV - The port cannot be configured as an Rotation Sensor.
std::int32_t get_angle( )
1
2
3
4
5
6
7
8
9
#define ROTATION_PORT 1

void opcontrol() {
  pros::Rotation rotation_sensor(ROTATION_PORT);
  while (true) {
                printf("Angle: %ld \n", rotation_sensor.get_angle());
                pros::delay(20);
  }
}
Parameters  
port The V5 port number from (1-21)

Returns: Rotation sensor’s current angle from 0 to 36000 or PROS_ERR if the operation failed, setting errno.


get_reversed

Get the Rotation Sensor’s reversed flag

This function uses the following values of errno when an error state is reached:

  • ENXIO - The given value is not within the range of V5 ports (1-21).
  • ENODEV - The port cannot be configured as an Rotation Sensor.
std::int32_t get_reversed( )
1
2
3
4
5
6
7
8
9
#define ROTATION_PORT 1

void opcontrol() {
  pros::Rotation rotation_sensor(ROTATION_PORT);
  while (true) {
                printf("Rotation Sensor Reversed: %ld \n", rotation_sensor.get_reversed());
                pros::delay(20);
  }
}
Parameters  
port The V5 port number from (1-21)

Returns: If the rotation sensor is reversed, or PROS_ERR if the operation failed, setting errno.


reverse

Reverses the rotational sensor’s positive counterclockwise/clockwise direction.

This function uses the following values of errno when an error state is reached:

  • ENXIO - The given value is not within the range of V5 ports (1-21).
  • ENODEV - The port cannot be configured as an Rotation Sensor.
std::int32_t reverse( )
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#define ROTATION_PORT 1

void opcontrol() {
  pros::Rotation rotation_sensor(ROTATION_PORT);
  while (true) {
   if(controller_get_digital(CONTROLLER_MASTER, E_CONTROLLER_DIGITAL_X)){
      rotation_sensor.reverse();
    }
  }
}
Parameters  
port The V5 port number from (1-21)

Returns: 1 if operation was successful or PROS_ERR if the operation failed, setting errno.


set_data_rate

Set the Rotation Sensor’s refresh interval in milliseconds.

The rate may be specified in increments of 5ms, and will be rounded down to the nearest increment. The minimum allowable refresh rate is 5ms. The default rate is 10ms.

As values are copied into the shared memory buffer only at 10ms intervals, setting this value to less than 10ms does not mean that you can poll the sensor’s values any faster. However, it will guarantee that the data is as recent as possible.

This function uses the following values of errno when an error state is reached:

  • ENXIO - The given value is not within the range of V5 ports (1-21).
  • ENODEV - The port cannot be configured as an Rotation Sensor.
std::int32_t set_data_rate(std::uint32_t rate)
1
2
3
4
5
6
#define ROTATION_PORT 1

void initialize() {
    pros::Rotation rotation_sensor(ROTATION_PORT);
    rotation_sensor.set_data_rate(5);
  }
Parameters  
rate The data refresh interval in milliseconds

Returns: 1 if the operation was successful or PROS_ERR if the operation failed, setting errno.