Coding an Arcade Drive

Does anyone know how to code an arcade drive with 4 motors?

1 Like

in robotc you could do this:


task main(){
	while(true){
		motor[leftFront] = vexRT[Ch2] + vexRT[Ch1];
		motor[leftRear] = vexRT[Ch2] + vexRT[Ch1];
		motor[rightFront] = vexRT[Ch2] - vexRT[Ch1];
		motor[rightRear] = vexRT[Ch2] - vexRT[Ch1];
	}
}

if you’re using v5 this would work:


int main() {
    while(true){
        leftFront.spin(vex::directionType::fwd, Controller1.Axis2.position(vex::percentUnits::pct) + Controller1.Axis1.position(vex::percentUnits::pct), vex::velocityUnits::pct);
        leftRear.spin(vex::directionType::fwd, Controller1.Axis2.position(vex::percentUnits::pct) + Controller1.Axis1.position(vex::percentUnits::pct), vex::velocityUnits::pct);
        rightFront.spin(vex::directionType::fwd, Controller1.Axis2.position(vex::percentUnits::pct) - Controller1.Axis1.position(vex::percentUnits::pct), vex::velocityUnits::pct);
        rightRear.spin(vex::directionType::fwd, Controller1.Axis2.position(vex::percentUnits::pct) - Controller1.Axis1.position(vex::percentUnits::pct), vex::velocityUnits::pct);
    }
}

I hope this works, thanks in advance!

Michael, if you want it to utilize 2 joysticks instead of one, which is how Mark drives:


fLeft.spin(vex::directionType::fwd, (Controller.Axis3.value() + Controller.Axis1.value())/2, vex::velocityUnits::pct);
    bLeft.spin(vex::directionType::fwd, (Controller.Axis3.value() + Controller.Axis1.value())/2, vex::velocityUnits::pct);
    fRight.spin(vex::directionType::fwd, (Controller.Axis3.value() - Controller.Axis1.value())/2, vex::velocityUnits::pct);
    bRight.spin(vex::directionType::fwd, (Controller.Axis3.value() - Controller.Axis1.value())/2, vex::velocityUnits::pct);

ps you can always ask me questions in person, it’s kind of my job

I just got the idea after the meeting, I’ll let you know if I have any more questions though, thanks!