Our motors are backwards and my team does not want to reverse the wiring. How do I reverse the motors with Java?
An easy way to do it is just put in the opposite power level. So if you want 0.5 power put in -0.5 instead.
public void drive(double leftPower, double rightPower) {
robotDrive.tankDrive(-leftPower, -rightPower);
}
You make one of the joystick values negative.
For further help we would need your code
*-1
or I think this is still valid from last year?
drive.setInvertedMotor(RobotDrive.kFrontLeft, true);
drive.setInvertedMotor(RobotDrive.kRearLeft, true);
This is it so far.
/----------------------------------------------------------------------------/
/* Copyright © FIRST 2008. All Rights Reserved. /
/ Open Source Software - may be modified and shared by FRC teams. The code /
/ must be accompanied by the FIRST BSD license file in the root directory of /
/ the project. /
/----------------------------------------------------------------------------*/
package edu.wpi.first.wpilibj.templates;
import edu.wpi.first.wpilibj.Joystick;
import edu.wpi.first.wpilibj.RobotDrive;
import edu.wpi.first.wpilibj.SimpleRobot;
import edu.wpi.first.wpilibj.Timer;
/**
-
The VM is configured to automatically run this class, and to call the
-
functions corresponding to each mode, as described in the SimpleRobot
-
documentation. If you change the name of this class or the package after
-
creating this project, you must also update the manifest file in the resource
-
directory.
*/
public class TheReaper extends SimpleRobot {
RobotDrive drive = new RobotDrive(1, 2);
Joystick leftStick = new Joystick(1);
Joystick rightStick = new Joystick(2);/**
- This function is called once each time the robot enters autonomous mode.
*/
public void autonomous() {
}
/**
- This function is called once each time the robot enters operator control.
*/
public void operatorControl() {
while (isOperatorControl() && isEnabled()){
drive.tankDrive(leftStick, rightStick);
Timer.delay(0.01);
}}
/**
- This function is called once each time the robot enters test mode.
*/
public void test() {
}
} - This function is called once each time the robot enters autonomous mode.
drive.tankDrive(leftStick, rightStick);
Change that to:
drive.tankDrive(-leftStick, -rightStick);
Now to confirm that I’m understanding, both sets of motors are spinning backwards, so the robot moves backwards. Or one set spins forward and one spins back?
It gives me an error when I try that.
Both are backwards.
Try
drive.tankDrive(-leftStick.getY(), -rightStick.getY());
Both are working now. Thank you very much!
No problem, just so you have an understand of what you just did. The .getY() method returns the value of the joysticks Y axis(forwards and backwards). The - inverts whatever value that it is attached to.