X-Git-Url: http://challenge-bot.com/repos/?p=3501%2Fstronghold-2016;a=blobdiff_plain;f=src%2Forg%2Fusfirst%2Ffrc%2Fteam3501%2Frobot%2Fsubsystems%2FDriveTrain.java;fp=src%2Forg%2Fusfirst%2Ffrc%2Fteam3501%2Frobot%2Fsubsystems%2FDriveTrain.java;h=f5a7d6c21eaffb98ea258c4cedc4061188c79b1f;hp=ac239361d2d44edc83358f8bb15dd54b1320cc56;hb=ee82dd56da8889e008eb1a09aa8b8e016a59fd72;hpb=86d7310bff2430b6963fec800ac441d4314a2c3a diff --git a/src/org/usfirst/frc/team3501/robot/subsystems/DriveTrain.java b/src/org/usfirst/frc/team3501/robot/subsystems/DriveTrain.java index ac239361..f5a7d6c2 100644 --- a/src/org/usfirst/frc/team3501/robot/subsystems/DriveTrain.java +++ b/src/org/usfirst/frc/team3501/robot/subsystems/DriveTrain.java @@ -7,6 +7,7 @@ import org.usfirst.frc.team3501.robot.sensors.GyroLib; import org.usfirst.frc.team3501.robot.sensors.Lidar; import edu.wpi.first.wpilibj.CANTalon; +import edu.wpi.first.wpilibj.Compressor; import edu.wpi.first.wpilibj.CounterBase.EncodingType; import edu.wpi.first.wpilibj.DoubleSolenoid; import edu.wpi.first.wpilibj.DoubleSolenoid.Value; @@ -29,6 +30,7 @@ public class DriveTrain extends PIDSubsystem { private GyroLib gyro; private DoubleSolenoid leftGearPiston, rightGearPiston; + private Compressor compressor; // Drivetrain specific constants that relate to the inches per pulse value for // the encoders @@ -62,11 +64,13 @@ public class DriveTrain extends PIDSubsystem { this.disable(); gyro.start(); - leftGearPiston = new DoubleSolenoid(10, Constants.DriveTrain.LEFT_FORWARD, - Constants.DriveTrain.LEFT_REVERSE); - rightGearPiston = new DoubleSolenoid(10, - Constants.DriveTrain.RIGHT_FORWARD, - Constants.DriveTrain.RIGHT_REVERSE); + leftGearPiston = new DoubleSolenoid(Constants.DriveTrain.MODULE_B_ID, + Constants.DriveTrain.LEFT_FORWARD, Constants.DriveTrain.LEFT_REVERSE); + rightGearPiston = new DoubleSolenoid(Constants.DriveTrain.MODULE_B_ID, + Constants.DriveTrain.RIGHT_FORWARD, Constants.DriveTrain.RIGHT_REVERSE); + + compressor = new Compressor(Constants.DriveTrain.COMPRESSOR_ID); + Constants.DriveTrain.inverted = false; } @@ -197,10 +201,10 @@ public class DriveTrain extends PIDSubsystem { /* * Method is a required method that the PID Subsystem uses to return the * calculated PID value to the driver - * + * * @param Gives the user the output from the PID algorithm that is calculated * internally - * + * * Body: Uses the output, does some filtering and drives the robot */ @Override @@ -213,12 +217,11 @@ public class DriveTrain extends PIDSubsystem { output = Math.signum(output) * 0.3; left = output; right = output + drift * Constants.DriveTrain.kp / 10; - drive(left, right); } else if (DRIVE_MODE == Constants.DriveTrain.GYRO_MODE) { left = output; right = -output; - arcadeDrive(0, output); } + drive(left, right); pidOutput = output; } @@ -229,7 +232,7 @@ public class DriveTrain extends PIDSubsystem { /* * Checks the drive mode - * + * * @return the current state of the robot in each state Average distance from * both sides of tank drive for Encoder Mode Angle from the gyro in GYRO_MODE */ @@ -265,9 +268,9 @@ public class DriveTrain extends PIDSubsystem { /* * constrains the distance to within -100 and 100 since we aren't going to * drive more than 100 inches - * + * * Configure Encoder PID - * + * * Sets the setpoint to the PID subsystem */ public void driveDistance(double dist, double maxTimeOut) { @@ -307,10 +310,10 @@ public class DriveTrain extends PIDSubsystem { /* * Turning method that should be used repeatedly in a command - * + * * First constrains the angle to within -360 and 360 since that is as much as * we need to turn - * + * * Configures Gyro PID and sets the setpoint as an angle */ public void turnAngle(double angle) { @@ -366,4 +369,19 @@ public class DriveTrain extends PIDSubsystem { rightGearPiston.set(gear); } + public void startCompressor() { + compressor.start(); + } + + public void stopCompressor() { + compressor.stop(); + } + + public void toggleCompressor() { + if (compressor.enabled()) + compressor.stop(); + else + compressor.start(); + } + }