49 lines
1.7 KiB
Java
49 lines
1.7 KiB
Java
package frc.robot.subsystems;
|
|
|
|
import java.util.function.DoubleSupplier;
|
|
|
|
import edu.wpi.first.wpilibj.drive.DifferentialDrive;
|
|
import edu.wpi.first.wpilibj.motorcontrol.VictorSP;
|
|
import edu.wpi.first.wpilibj2.command.Command;
|
|
import edu.wpi.first.wpilibj2.command.SubsystemBase;
|
|
import frc.robot.constants.DrivetrainConstants;
|
|
|
|
public class Drivetrain extends SubsystemBase {
|
|
|
|
//creates instance variables//
|
|
private VictorSP leftFront;
|
|
private VictorSP leftRear;
|
|
private VictorSP rightFront;
|
|
private VictorSP rightRear;
|
|
|
|
private DifferentialDrive drive;
|
|
|
|
public Drivetrain() {
|
|
|
|
//creates instances of each motor//
|
|
leftFront = new VictorSP(DrivetrainConstants.kLeftFrontPWM);
|
|
leftRear = new VictorSP(DrivetrainConstants.kLeftRearPWM);
|
|
rightFront = new VictorSP(DrivetrainConstants.kRightFrontPWM);
|
|
rightRear = new VictorSP(DrivetrainConstants.kRightRearPWM);
|
|
|
|
//makes the other motor in a gearbox follow its companion//
|
|
leftFront.addFollower(leftRear);
|
|
rightFront.addFollower(rightRear);
|
|
rightFront.setInverted(true); //makes the right side of the drive base inverted//
|
|
|
|
drive = new DifferentialDrive(leftFront, rightFront);
|
|
}
|
|
|
|
//methods that take 2 doubles and convert them to motor commands//
|
|
public Command driveArcade(DoubleSupplier xSpeed, DoubleSupplier zRotation) {
|
|
return run(() -> {
|
|
drive.arcadeDrive(xSpeed.getAsDouble(), zRotation.getAsDouble());
|
|
});
|
|
}
|
|
|
|
public Command driveTank(DoubleSupplier leftSpeed, DoubleSupplier rightSpeed) {
|
|
return run(() -> {
|
|
drive.tankDrive(leftSpeed.getAsDouble(), rightSpeed.getAsDouble());
|
|
});
|
|
}
|
|
} |