Motor and Motor Group#
Introduction#
The VEX V5 Motion category offers methods for interacting with motors and motor groups.
This page uses motor_1 and motor_group_1 as the example motor and motor group name respectively. Replace them with your own configured names as needed.
Below is a list of all methods:
Actions – Control the movements of motors.
spin– Spins a motor or motor group in a specified direction indefinitely.spinFor– Spins a motor or motor group for a specified distance.spinToPosition– Spins a motor to an absolute position.stop– Stops a motor or motor group with configurable behavior.
Mutators – Change the motor’s different attributes.
setPosition– Sets the motor or motor group’s position to a specific value.setVelocity– Sets the default velocity for the motor or motor group.setStopping– Sets the stop behavior (brake, coast, or hold).setMaxTorque– Sets the maximum torque for a motor or motor group.setTimeout– Limits how long a motor function waits before giving up if movement is blocked.setReversed– Sets only a motor to have its direction be reversed.resetPosition– Sets only a motor’s position to 0.convertVelocity– Converts the velocity of a motor or motor group to a different unit.
Getters – Return data from the motors.
isDone– Returns whether a motor or motor group is currently not spinning.isSpinning– Returns whether a motor or motor group is currently spinning.position– Returns a motor or motor group’s current position.velocity– Returns a motor or motor group’s current velocity.current– Returns the current being used by a motor or motor group.direction– Returns the spin direction of a motor or motor group.power– Returns the amount of power being used by a motor or motor group.torque– Returns the torque generated by a motor or motor group.efficiency– Returns the efficiency of a motor or motor group.temperature– Returns the temperature of a motor or motor group.getTimeout– Returns the current timeout for a motor or motor group as an integer in milliseconds.getMotorCartridge– Returns the gear cartridge setting for a motor.command– Returns the last velocity sent to a motor as a double.installed– Returns a Boolean indicating whether a motor is connected.value– Returns the value of a motor as an integer.count– Returns the number of motors in a motor group as an integer.
Constructors – Manually initialize and configure motors and motor groups.
motor– Creates a motor.motor_group– Creates a motor group.
Actions#
spin#
spin spins a motor or motor group in the specified direction indefinitely.
Default Usage:
Motor1.spin(direction);
Overload Usages:
Motor1.spin(direction, velocity, velocityUnits);
Motor1.spin(direction, voltage, voltageUnits);
Parameters |
Description |
|---|---|
|
The direction in which to spin the motor or motor group:
|
|
The velocity that the motor or motor group will spin at as a double. |
|
The unit that will represent the velocity:
|
|
The voltage that the motor will spin with. |
|
The unit that will represent the voltage:
|
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Spin forward, then stop
Motor1.spin(forward);
wait(1, seconds);
Motor1.stop();
}
spinFor#
spinFor spins a Motor or Motor Group for a set amount in a specified direction.
Default Usage:
Motor1.spinFor(direction, rotation, units, wait);
Overload Usages:
Motor1.spinFor(rotation, units, velocity, units_v, wait);
Motor1.spinFor(direction, rotation, units, velocity, units_v, wait);
Motor1.spinFor(rotation, units, wait);
Motor1.spinFor(time, units_t, velocity, units_v);
Motor1.spinFor(direction, time, units_t, velocity, units_v);
Motor1.spinFor(time, units_t);
Motor1.spinFor(direction, time, units_t);
Parameters |
Description |
|---|---|
|
The direction in which to spin the motor or motor group:
|
|
How far the motor will rotate. |
|
The unit that will represent the rotation:
|
|
Optional.
|
|
The velocity that the motor or motor group will spin at as a double. |
|
The unit that will represent the velocity:
|
|
The amount of time the motor will spin for. |
|
The unit that represents the time:
|
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Spin 1 turn fast, then 1 turn slow
Motor1.spinFor(forward, 1, turns, true);
Motor1.spinFor(reverse, 1, turns, 20, velocityUnits::pct, true);
}
spinToPosition#
spinToPosition spins the motor or motor group to a specified position.
Default Usage:
Motor1.spinToPosition(position, units, wait);
Overload Usages:
Motor1.spinToPosition(position, positionUnits, velocity, velocityUnits, wait);
Parameters |
Description |
|---|---|
|
The position that the motor or motor group will spin to. |
|
The unit that will represent the position:
|
|
Optional.
|
|
The velocity that the motor or motor group will spin at as a double. |
|
The unit that will represent the velocity:
|
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Spin forward, then go to 90°
Motor1.spin(forward);
wait(1, seconds);
Motor1.spinToPosition(90, degrees);
}
stop#
stop stops the motor or motor group from spinning.
Default Usage:
Motor1.stop();
Overload Usages:
Motor1.stop(mode);
Parameters |
Description |
|---|---|
|
How the motor or motor group will stop:
|
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Spin and coast to a stop
Motor1.setVelocity(100, percent);
Motor1.spin(forward);
wait(1, seconds);
Motor1.stop(coast);
}
Mutators#
setPosition#
setPosition sets a specific position value to a motor or motor group, which updates the encoder reading.
Usage:
Motor1.setPosition(position, units);
Parameters |
Description |
|---|---|
|
The position that the specified motor or motor group will spin to. |
|
The unit that will represent the rotation:
|
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Set a new zero, then go to 0°
Motor1.setPosition(180, degrees);
Motor1.spinToPosition(0, degrees);
}
setVelocity#
setVelocity sets the default velocity for a motor or motor group. This velocity setting will be used for subsequent calls to any motor functions if a specific velocity is not provided.
Usage:
Motor1.setVelocity(velocity, units);
Parameters |
Description |
|---|---|
|
The velocity the motor or motor group will spin at as a double. |
|
The unit that represents the velocity:
|
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Try default, then slow, then fast
Motor1.spinFor(forward, 180, degrees);
wait(1, seconds);
Motor1.setVelocity(20, percent);
Motor1.spinFor(reverse, 180, degrees);
wait(1, seconds);
Motor1.setVelocity(100, percent);
Motor1.spinFor(forward, 180, degrees);
}
setStopping#
setStopping sets how a motor or motor group behaves when it stops.
Usage:
Motor1.setStopping(mode);
Parameters |
Description |
|---|---|
|
How the motor or motor group will stop:
|
setMaxTorque#
setMaxTorque sets the maximum torque that a motor or motor group can spin at.
Usage:
Motor1.setMaxTorque(value, units);
Parameters |
Description |
|---|---|
|
The maximum torque the motor or motor group can spin at. |
|
The unit that represents the torque:
|
setTimeout#
setTimeout sets a time limit for how long a motor command will wait to reach its target. If the robot cannot complete the movement within the set time, it will stop automatically and continue with the next command.
Note: The motor’s time limit is used to prevent motor commands that do not reach their target position from stopping the execution of other commands in the stack.
Usage:
Motor1.setTimeout(time, units);
Parameters |
Description |
|---|---|
|
The maximum number of time units a motor command will run before stopping and moving to the next command. |
|
The unit that represents the timeout:
|
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Stop a long move after 1 seconds
Motor1.setTimeout(1, seconds);
Motor1.spinFor(forward, 2, turns);
Motor1.spinToPosition(0, degrees);
}
setReversed#
setReversed sets the motor to be reversed. This method works the same as setting the reverse parameter to true when constructing a motor.
Usage:
Motor1.setReversed(reversed);
Parameters |
Description |
|---|---|
|
A Boolean representing whether or not the motor is reversed:
|
resetPosition#
resetPosition sets the motor or motor group’s position to 0.
Usage:
Motor1.resetPosition();
Parameters |
Description |
|---|---|
This method has no parameters. |
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Spin to 360°, then reset the encoder
Motor1.spinToPosition(360, degrees);
Motor1.resetPosition();
// Now spin to 90° from this new zero point
Motor1.spinToPosition(90, degrees);
}
convertVelocity#
convertVelocity converts the velocity in the given units to specified units based on the motor gearing.
Usage:
Motor1.convertVelocity(velocity, units, unitsout)
Parameters |
Description |
|---|---|
|
The velocity to convert. |
|
|
|
|
Getters#
isDone#
isDone returns a Boolean indicating whether a motor or motor group is not currently spinning.
1– The motor or motor group is done spinning.0– The motor or motor group is still spinning.
Usage:
Motor1.isDone()
Parameters |
Description |
|---|---|
This method has no parameters. |
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Spin forward until the motor is done spinning
Motor1.spinFor(forward, 200, degrees, false);
while (true) {
if (Motor1.isDone()) {
Drivetrain.stop();
} else {
Drivetrain.drive(forward);
}
}
}
isSpinning#
isSpinning returns a Boolean indicating whether a motor or motor group is currently spinning.
1– The motor or motor group is spinning.0– The motor or motor group is not spinning.
Usage:
Motor1.isSpinning()
Parameters |
Description |
|---|---|
This method has no parameters. |
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Spin forward until the motor is done spinning
Motor1.spinFor(forward, 200, degrees, false);
while (true) {
if (Motor1.isSpinning()) {
Drivetrain.drive(forward);
} else {
Drivetrain.stop();
}
}
}
position#
position returns the current position of a motor or motor group as a double.
Usage:
Motor1.position(units)
Parameters |
Description |
|---|---|
|
The unit that will represent the position:
|
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Spin, then show the final position
Motor1.spin(forward);
wait(1, seconds);
Motor1.stop();
Brain.Screen.print("Pos: %f", Motor1.position(degrees));
}
velocity#
velocity returns the current velocity of a motor or motor group as a double.
Usage:
Motor1.velocity(units)
Parameters |
Description |
|---|---|
|
The unit that will represent the velocity:
|
current#
current returns the current of a motor or motor group as a double.
Usage:
Motor1.current(units)
Parameters |
Description |
|---|---|
|
The unit that represents the current:
|
power#
power returns the current power of the motor as a double.
Usage:
Motor1.power(units)
Parameters |
Description |
|---|---|
|
The unit that represents the power:
|
torque#
torque returns the current torque of the motor as a double.
Usage:
Motor1.torque(units)
Parameters |
Description |
|---|---|
|
The unit that represents the torque:
|
efficiency#
efficiency returns the efficiency of the motor in percent as a double.
Usage:
Motor1.efficiency()
Parameters |
Description |
|---|---|
This method has no parameters. |
temperature#
temperature returns the current temperature of the motor as a double.
Usage:
Motor1.temperature(units)
Parameters |
Description |
|---|---|
|
The unit that represents the temperature:
|
direction#
direction returns the current direction a motor or motor group is spinning in:
forwardreverse
Usage:
Motor1.direction()
Parameters |
Description |
|---|---|
This method has no parameters. |
getTimeout#
getTimeout returns the current timeout for a motor or motor group as an integer in milliseconds.
Usage:
Motor1.getTimeout()
Parameters |
Description |
|---|---|
This method has no parameters. |
getMotorCartridge#
getMotorCartridge returns the gear cartridge setting for a motor in:
ratio36_1: A 36:1 gear ratio. A red gearbox for a V5 SmartMotor.ratio18_1: A 18:1 gear ratio. A green gearbox for a V5 SmartMotor.ratio6_1: A 6:1 gear ratio. A blue gearbox for a V5 SmartMotor.
Usage:
Motor1.getMotorCartridge()
Parameters |
Description |
|---|---|
This method has no parameters. |
command#
command returns the last velocity sent to a motor as a double.
Usage:
Motor1.command(units)
Parameters |
Description |
|---|---|
|
rpm – rotations per minute dps – degrees per second. |
installed#
installed returns a Boolean indicating whether a motor is connected.
1– The motor is connected.0– The motor is not connected.
Usage:
Motor1.installed()
Parameters |
Description |
|---|---|
This method has no parameters. |
value#
value returns the value of a motor as an integer.
Usage:
Motor1.value()
Parameters |
Description |
|---|---|
This method has no parameters. |
count#
count returns the number of motors in a motor group as an integer. This method will not work with individual Motors.
Usage:
MotorGroup1.count()
Parameters |
Description |
|---|---|
This method has no parameters. |
Constructors#
Constructors are used to manually create motor and motor_group objects, which are necessary for configuring a motor or motor group outside of VEXcode.
motor#
motor creates an object of the motor Class in the specified port.
Default Usage:
motor Motor1 = motor(port);
Overload Usages:
motor Motor1 = motor(port, reverse);
motor Motor1 = motor(port, gearRatio);
motor Motor1 = motor(port, gearRatio, reverse);
Parameters |
Description |
|---|---|
|
Which Smart Port that the Motor is connected to as |
|
A Boolean indicating whether or not the Motor’s directions are configured in reverse:
|
|
The gear ratio of the Motor as one of the following:
|
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Make a reversed motor on Port 1
motor Motor1 = motor(PORT1, true);
}
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Construct a V5 Motor with a 6:1 Turbo Gear Cartridge.
motor Motor1 = motor(PORT1, ratio6_1);
}
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Construct a V5 Motor with a 36:1 Torque Gear Cartridge
// that runs in reverse.
motor Motor1 = motor(PORT1, ratio36_1, true);
}
motor_group#
motor_group creates an object of the motor_group Class in the specified port. A motor_group is a collection of individual motor objects.
Usage:
motor_group MotorGroup1 = motor_group(motor1, motor2);
Parameters |
Description |
|---|---|
|
The configured |
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Create two motors
motor motorA = motor(PORT1, ratio18_1 false);
motor motorB = motor(PORT2, ratio18_1, false);
// Create a motor group with those motors
motor_group MotorGroup1 = motor_group(motorA, motorB);
}