Motor Code Help

Hi, I would like to do something like:

Joystick1yaxis = Motor[1];
Joystick1yaxis = Motor[2];
Joystick2yaxis = Motor[3];
Joystick2yaxis = Motor[4];

how would I go about this?
Thanks :smiley:

have you read http://first.wpi.edu/Images/CMS/First/GettingStartedWithC.pdf and http://first.wpi.edu/Images/CMS/First/WPI_Robotics_Library_Users_Guide.pdf?
I would assume you want something more like this:

robotDrive.TankDrive(stick1,stick2);

But I need two joysticks running 4 motors, 2 motors to each joystick.

Like ByteIt said, you’ll want to do robotDrive.TankDrive(leftJoystick, rightJoystick);

But, the constructor you’ll want to use is:

RobotDrive(SpeedController *frontLeftMotor, SpeedController *rearLeftMotor, SpeedController *frontRightMotor, SpeedController *rearRightMotor, float sensitivity=0.5)

This will give you tank drive for 4 motors from two joysticks.

Good luck! :slight_smile:

So now I have:

class RobotDemo : public SimpleRobot
{
	Jaguar frontLeftMotor(1);
	RobotDrive drivetrain(SpeedController *frontLeftMotor, SpeedController *rearLeftMotor, SpeedController *frontRightMotor, SpeedController *rearRightMotor, float sensitivity=0.5)
	Joystick stick; // only joystick

public:
	RobotDemo(void):
		myRobot(1, 2),	// these must be initialized in the same order
		stick(1)		// as they are declared above.
	{
		GetWatchdog().SetExpiration(0.1);
	}

	/**
	 * Drive left & right motors for 2 seconds then stop
	 */
	void Autonomous(void)
	{
		GetWatchdog().SetEnabled(false);
		drivetrain.Drive(0.5, 0.0); 	// drive forwards half speed
		Wait(2.0); 				//    for 2 seconds
		drivetrain.Drive(0.0, 0.0); 	// stop robot
	}

	/**
	 * Runs the motors with arcade steering. 
	 */
	void OperatorControl(void)
	{
		GetWatchdog().SetEnabled(true);
		while (IsOperatorControl())
		{
			GetWatchdog().Feed();
			robotDrive.TankDrive(stick1,stick2);
			Wait(0.005);				// wait for a motor update time
		}
	}
};

START_ROBOT_CLASS(RobotDemo);

I need help declaring the Jaguars now :confused:

This should work. Change the values under RobotDemo(void): to change the slots.

#include "WPILib.h"

class RobotDemo : public SimpleRobot
{
	RobotDrive robotDrive;
	Joystick stick1, stick2;

public:
	RobotDemo(void):
		robotDrive(1,				//Front Left motor port
				2,	//Back left motor port
				3,	//Front right motor port
				4),	//Back right motor port
		stick1(1),		//Joystick 1 in slot 1
		stick2(2)		//Joystick 2 in slot 2
	{
		GetWatchdog().SetExpiration(0.1);
	}

	/**
	 * Drive left & right motors for 2 seconds then stop
	 */
	void Autonomous(void)
	{
		GetWatchdog().SetEnabled(false);
		robotDrive.Drive(0.5, 0.0); 	// drive forwards half speed
		Wait(2.0); 						//    for 2 seconds
		robotDrive.Drive(0.0, 0.0); 	// stop robot
	}

	/**
	 * Runs the motors with arcade steering. 
	 */
	void OperatorControl(void)
	{
		GetWatchdog().SetEnabled(true);
		while (IsOperatorControl())
		{
			GetWatchdog().Feed();
			robotDrive.TankDrive(stick1,stick2);
			Wait(0.005);				// wait for a motor update time
		}
	}
};

START_ROBOT_CLASS(RobotDemo);

If it works, yay! If not, play around with the ports, and make sure everything’s wired correctly. If all of that is correct, I probably did something stupid. XD

So this is what I have right now, we plugged the left motors into pwm 1 and the right ones into pwm 2 using pwm splitter, and still no luck

#include "WPILib.h"

class RobotDemo : public SimpleRobot
{
	RobotDrive robotDrive;
	Joystick stick1, stick2;

public:
	RobotDemo(void):
		robotDrive(1,2),	
		stick1(1),		//Joystick 1 in slot 1
		stick2(2)		//Joystick 2 in slot 2
	{
		GetWatchdog().SetExpiration(0.1);
	}

	void Autonomous(void)
	{
		GetWatchdog().SetEnabled(false);
		robotDrive.Drive(0.5, 0.0); 	// drive forwards half speed
		Wait(2.0); 						//    for 2 seconds
		robotDrive.Drive(0.0, 0.0); 	// stop robot
	}

	void OperatorControl(void)
	{
		GetWatchdog().SetEnabled(true);
		while (IsOperatorControl())
		{
			GetWatchdog().Feed();
			robotDrive.TankDrive(stick1,stick2);
			Wait(0.005);				// wait for a motor update time
		}
	}
};

START_ROBOT_CLASS(RobotDemo);

are the joysticks configured correctly on the driverstation?
go to setup tab, and on the right side, drag the joysticks to 1 and 2

Got things working now, thanks for all the help guys!

might i suggest using an ancient technology of split PWM’s the go from one port to 2 jaguars or victors. they are extremely helpful.

We may or may not have ended up doing this…