Drive Code Help

I am trying to make to code a 6 motor drive in arcade drive using both joysticks, but I can’t figure out how to make it so I can use both joysticks at the same time, for example going forward and turning right. This is the code I have currently:
if(Controller1.Axis3.value() > 10 || Controller1.Axis3.value() < -10){

RFMotor.spin(vex::directionType::fwd, Controller1.Axis3.position (vex::percentUnits::pct) + Controller1.Axis1.position(vex::percentUnits::pct), vex::velocityUnits::pct);
RBMotor.spin(vex::directionType::fwd, Controller1.Axis3.position (vex::percentUnits::pct) + Controller1.Axis1.position(vex::percentUnits::pct), vex::velocityUnits::pct);
RMMotor.spin(vex::directionType::fwd, Controller1.Axis3.position(vex::percentUnits::pct) + Controller1.Axis1.position(vex::percentUnits::pct), vex::velocityUnits::pct);
LFMotor.spin(vex::directionType::rev, Controller1.Axis3.position (vex::percentUnits::pct) + Controller1.Axis1.position(vex::percentUnits::pct), vex::velocityUnits::pct);
LBMotor.spin(vex::directionType::rev, Controller1.Axis3.position (vex::percentUnits::pct) + Controller1.Axis1.position(vex::percentUnits::pct), vex::velocityUnits::pct);
LMMotor.spin(vex::directionType::rev, Controller1.Axis3.position (vex::percentUnits::pct) + Controller1.Axis1.position(vex::percentUnits::pct), vex::velocityUnits::pct);
} else if (Controller1.Axis1.value() > 10 || Controller1.Axis1.value() < -10){

RFMotor.spin(vex::directionType::fwd, Controller1.Axis1.position (vex::percentUnits::pct), vex::velocityUnits::pct);
RBMotor.spin(vex::directionType::fwd, Controller1.Axis1.position (vex::percentUnits::pct), vex::velocityUnits::pct);
RMMotor.spin(vex::directionType::fwd, Controller1.Axis1.position (vex::percentUnits::pct), vex::velocityUnits::pct);
LFMotor.spin(vex::directionType::fwd, Controller1.Axis1.position (vex::percentUnits::pct), vex::velocityUnits::pct);
LBMotor.spin(vex::directionType::fwd, Controller1.Axis1.position (vex::percentUnits::pct), vex::velocityUnits::pct);
LMMotor.spin(vex::directionType::fwd, Controller1.Axis1.position (vex::percentUnits::pct), vex::velocityUnits::pct);
} else{

RFMotor.stop(vex::brakeType::brake);
RBMotor.stop(vex::brakeType::brake);
RMMotor.stop(vex::brakeType::brake);
LFMotor.stop(vex::brakeType::brake);
LBMotor.stop(vex::brakeType::brake);
LMMotor.stop(vex::brakeType::brake);
}

What currently happens when you run the code?

also, put ``` above and below your code.

if(Controller1.Axis3.value() > 10 || Controller1.Axis3.value() < -10){

RFMotor.spin(vex::directionType::fwd, Controller1.Axis3.position (vex::percentUnits::pct) + Controller1.Axis1.position(vex::percentUnits::pct), vex::velocityUnits::pct);
RBMotor.spin(vex::directionType::fwd, Controller1.Axis3.position (vex::percentUnits::pct) + Controller1.Axis1.position(vex::percentUnits::pct), vex::velocityUnits::pct);
RMMotor.spin(vex::directionType::fwd, Controller1.Axis3.position(vex::percentUnits::pct) + Controller1.Axis1.position(vex::percentUnits::pct), vex::velocityUnits::pct);
LFMotor.spin(vex::directionType::rev, Controller1.Axis3.position (vex::percentUnits::pct) + Controller1.Axis1.position(vex::percentUnits::pct), vex::velocityUnits::pct);
LBMotor.spin(vex::directionType::rev, Controller1.Axis3.position (vex::percentUnits::pct) + Controller1.Axis1.position(vex::percentUnits::pct), vex::velocityUnits::pct);
LMMotor.spin(vex::directionType::rev, Controller1.Axis3.position (vex::percentUnits::pct) + Controller1.Axis1.position(vex::percentUnits::pct), vex::velocityUnits::pct);
} else if (Controller1.Axis1.value() > 10 || Controller1.Axis1.value() < -10){

RFMotor.spin(vex::directionType::fwd, Controller1.Axis1.position (vex::percentUnits::pct), vex::velocityUnits::pct);
RBMotor.spin(vex::directionType::fwd, Controller1.Axis1.position (vex::percentUnits::pct), vex::velocityUnits::pct);
RMMotor.spin(vex::directionType::fwd, Controller1.Axis1.position (vex::percentUnits::pct), vex::velocityUnits::pct);
LFMotor.spin(vex::directionType::fwd, Controller1.Axis1.position (vex::percentUnits::pct), vex::velocityUnits::pct);
LBMotor.spin(vex::directionType::fwd, Controller1.Axis1.position (vex::percentUnits::pct), vex::velocityUnits::pct);
LMMotor.spin(vex::directionType::fwd, Controller1.Axis1.position (vex::percentUnits::pct), vex::velocityUnits::pct);
} else{

RFMotor.stop(vex::brakeType::brake);
RBMotor.stop(vex::brakeType::brake);
RMMotor.stop(vex::brakeType::brake);
LFMotor.stop(vex::brakeType::brake);
LBMotor.stop(vex::brakeType::brake);
LMMotor.stop(vex::brakeType::brake);
}
1 Like

Currently, if I try to use both, it just speeds up somehow. Otherwise, the other ones are regular with Axis 3 being forward and backward and Axis 1 being to rotate right and left.

Try using this statement:

MOTORNAME.spin(forward, Controller1.Axis3.position(percent) +/ Controller1.Axis1.position(percent), percent);

If this doesn’t work, make sure you are using namespace vex

1 Like