my drive just goes forward

/----------------------------------------------------------------------------/
/* /
/
Module: main.cpp /
/
Author: VEX /
/
Created: Thu Sep 26 2019 /
/
Description: Competition Template /
/
/
/
----------------------------------------------------------------------------*/

// ---- START VEXCODE CONFIGURED DEVICES ----
// Robot Configuration:
// [Name] [Type] [Port(s)]
// Drivetrain drivetrain 7, 10, 20, 19
// lift motor 9
// ring motor 18
// fourbar motor 8
// pp digital_out A
// Controller1 controller
// ---- END VEXCODE CONFIGURED DEVICES ----

#include “vex.h”

using namespace vex;

// A global instance of competition
competition Competition;

// define your global instances of motors and other devices here
using signature = vision::signature;
using code = vision::code;

// A global instance of brain used for printing to the V5 Brain screen
brain Brain;

// VEXcode device constructors
motor leftMotorA = motor(PORT13, ratio6_1, true);
motor leftMotorB = motor(PORT12, ratio6_1, true);
motor leftMotorC = motor(PORT11, ratio6_1, true);
motor_group LeftDriveSmart = motor_group(leftMotorA, leftMotorB , leftMotorC);
motor rightMotorA = motor(PORT18, ratio6_1, false);
motor rightMotorB = motor(PORT19, ratio6_1, false);
motor rightMotorC = motor(PORT20, ratio6_1, false);
motor_group RightDriveSmart = motor_group(rightMotorA, rightMotorB, rightMotorC);
drivetrain Drivetrain = drivetrain(LeftDriveSmart, RightDriveSmart, 319.19, 295, 40, mm, 1);
motor lift = motor(PORT9, ratio36_1, false);
motor ring = motor(PORT1, ratio6_1, true);
motor fourbar = motor(PORT10, ratio36_1, false);
digital_out pp = digital_out(Brain.ThreeWirePort.A);
digital_out penis = digital_out(Brain.ThreeWirePort.B);
digital_out daddy_jobe = digital_out(Brain.ThreeWirePort.C);
digital_out mega_nut = digital_out(Brain.ThreeWirePort.D);
controller Controller1 = controller(primary);

// VEXcode generated functions
// define variable for remote controller enable/disable
bool RemoteControlCodeEnabled = true;
// define variables used for controlling motors based on controller inputs
bool Controller1LeftShoulderControlMotorsStopped = true;
bool Controller1UpDownButtonsControlMotorsStopped = true;
bool Controller1XBButtonsControlMotorsStopped = true;
bool DrivetrainLNeedsToBeStopped_Controller1 = true;
bool DrivetrainRNeedsToBeStopped_Controller1 = true;
/---------------------------------------------------------------------------/
/* Pre-Autonomous Functions /
/
/
/
You may want to perform some actions before the competition starts. /
/
Do them in the following function. You must return from this function /
/
or the autonomous and usercontrol tasks will not be started. This /
/
function is only called once after the V5 has been powered on and /
/
not every time that the robot is disabled. /
/
---------------------------------------------------------------------------*/

void pre_auton(void) {
// Initializing Robot Configuration. DO NOT REMOVE!
//vexcodeInit();

// All activities that occur before the competition starts
// Example: clearing encoders, setting servo positions, …
}

/---------------------------------------------------------------------------/
/* /
/
Autonomous Task /
/
/
/
This task is used to control your robot during the autonomous phase of /
/
a VEX Competition. /
/
/
/
You must modify the code to add your own robot specific commands here. /
/
---------------------------------------------------------------------------*/

void autonomous(void) {
// …
// Insert autonomous user code here.
// …
}

/---------------------------------------------------------------------------/
/* /
/
User Control Task /
/
/
/
This task is used to control your robot during the user control phase of /
/
a VEX Competition. /
/
/
/
You must modify the code to add your own robot specific commands here. /
/
---------------------------------------------------------------------------*/

void usercontrol(void) {
// User control code here, inside the loop
while (1) {
// This is the main execution loop for the user control program.
// Each time through the loop your program should update motor + servo
// values based on feedback from the joysticks.
if(RemoteControlCodeEnabled) {
leftMotorA.setVelocity(100, pct);
leftMotorB.setVelocity(100, pct);
leftMotorC.setVelocity(100, pct);
rightMotorA.setVelocity(100, pct);
rightMotorB.setVelocity(100, pct);
rightMotorC.setVelocity(100, pct);
lift.setVelocity(100, pct);
fourbar.setVelocity(100, pct);
// calculate the drivetrain motor velocities from the controller joystick axies
// left = Axis3 + Axis1
// right = Axis3 - Axis1
int drivetrainLeftSideSpeed = Controller1.Axis3.position() + Controller1.Axis1.position();
int drivetrainRightSideSpeed = Controller1.Axis3.position() - Controller1.Axis1.position();

  // check if the value is inside of the deadband range
  if (drivetrainLeftSideSpeed < 5 && drivetrainLeftSideSpeed > -5) {
    // check if the left motor has already been stopped
    if (DrivetrainLNeedsToBeStopped_Controller1) {
      // stop the left drive motor
      LeftDriveSmart.stop();
      // tell the code that the left motor has been stopped
      DrivetrainLNeedsToBeStopped_Controller1 = false;
    }
  } else {
    // reset the toggle so that the deadband code knows to stop the left motor nexttime the input is in the deadband range
    DrivetrainLNeedsToBeStopped_Controller1 = true;
  }
  // check if the value is inside of the deadband range
  if (drivetrainRightSideSpeed < 5 && drivetrainRightSideSpeed > -5) {
    // check if the right motor has already been stopped
    if (DrivetrainRNeedsToBeStopped_Controller1) {
      // stop the right drive motor
      RightDriveSmart.stop();
      // tell the code that the right motor has been stopped
      DrivetrainRNeedsToBeStopped_Controller1 = false;
    }
  } else {
    // reset the toggle so that the deadband code knows to stop the right motor next time the input is in the deadband range
    DrivetrainRNeedsToBeStopped_Controller1 = true;
  }
  
  // only tell the left drive motor to spin if the values are not in the deadband range
  if (DrivetrainLNeedsToBeStopped_Controller1) {
    LeftDriveSmart.setVelocity(drivetrainLeftSideSpeed, percent);
    LeftDriveSmart.spin(forward);
  }
  // only tell the right drive motor to spin if the values are not in the deadband range
  if (DrivetrainRNeedsToBeStopped_Controller1) {
    RightDriveSmart.setVelocity(drivetrainRightSideSpeed, percent);
    RightDriveSmart.spin(forward);
  }
  // check the ButtonL1/ButtonL2 status to control fourbar
  if (Controller1.ButtonL1.pressing()) {
    fourbar.setVelocity(100,pct);
    fourbar.spin(forward);
    Controller1LeftShoulderControlMotorsStopped = false;
  } else if (Controller1.ButtonL2.pressing()) {
    fourbar.setVelocity(100,pct);
    fourbar.spin(reverse);
    Controller1LeftShoulderControlMotorsStopped = false;
  } else if (!Controller1LeftShoulderControlMotorsStopped) {
    fourbar.stop(brakeType::hold);
    // set the toggle so that we don't constantly tell the motor to stop when the buttons are released
    Controller1LeftShoulderControlMotorsStopped = true;
  }
  // check the ButtonUp/ButtonDown status to control lift
    // set the toggle so that we don't constantly tell the motor to stop when the buttons are released
    Controller1UpDownButtonsControlMotorsStopped = true;
  }
  // check the ButtonX/ButtonB status to control ring
  if (Controller1.ButtonR1.pressing()) {
    ring.setVelocity(100,pct);
    ring.spin(reverse);
    Controller1XBButtonsControlMotorsStopped = false;
  } else if (Controller1.ButtonR2.pressing()) {
    ring.setVelocity(100,pct);
    ring.spin(forward);
    Controller1XBButtonsControlMotorsStopped = false;
  } else if (!Controller1XBButtonsControlMotorsStopped) {
    ring.stop();
    // set the toggle so that we don't constantly tell the motor to stop when the buttons are released
    Controller1XBButtonsControlMotorsStopped = true;
  }
  //pp
  if (Controller1.ButtonUp.pressing()) {
    pp.set(true);
  } else if (Controller1.ButtonDown.pressing()) {
    pp.set(false);
  }

    if (Controller1.ButtonA.pressing()) {
    penis.set(true);
  } else if (Controller1.ButtonY.pressing()) {
    penis.set(false);


    if (Controller1.ButtonX.pressing()) {
    daddy_jobe.set(true);
  } else if (Controller1.ButtonB.pressing()) {
    daddy_jobe.set(false);

    if (Controller1.ButtonUp.pressing()) {
    mega_nut.set(true);
  } else if (Controller1.ButtonDown.pressing()) {
    mega_nut.set(false);
  }
  }
  }
}
// wait before repeating the process
wait(20, msec);
// ........................................................................
// Insert user code here. This is where you use the joystick values to
// update your motors, etc.
// ........................................................................

 // Sleep the task for a short amount of time to
                // prevent wasted resources.

}

//
// Main will set up the competition functions and callbacks.
//
int main() {
// Set up callbacks for autonomous and driver control periods.
Competition.autonomous(autonomous);
Competition.drivercontrol(usercontrol);

// Run the pre-autonomous function.
pre_auton();

// Prevent main from exiting with an infinite loop.
while (true) {
wait(100, msec);
}
}

Please format your text using the backwards single quote thingy. ‘ that but backwards. You did it once, just do it for the whole thing though. Anyways, why don’t you just use motor.spin(forward, 100, pct)?

1 Like