X-Git-Url: http://challenge-bot.com/repos/?a=blobdiff_plain;f=src%2Forg%2Fusfirst%2Ffrc%2Fteam3501%2Frobot%2Fsubsystems%2FShooter.java;h=40581afee5a3a7e523b82d1beb2d6aa010971020;hb=071ab31546b9c3cf13bca472a4ac76b1480aeb6a;hp=ec3731752bad3f43df0175fb9106d76b2821de0b;hpb=2c52cb6ef31a26d971f85a61f38550cb036c99d2;p=3501%2Fstronghold-2016 diff --git a/src/org/usfirst/frc/team3501/robot/subsystems/Shooter.java b/src/org/usfirst/frc/team3501/robot/subsystems/Shooter.java index ec373175..40581afe 100755 --- a/src/org/usfirst/frc/team3501/robot/subsystems/Shooter.java +++ b/src/org/usfirst/frc/team3501/robot/subsystems/Shooter.java @@ -1,6 +1,7 @@ package org.usfirst.frc.team3501.robot.subsystems; import org.usfirst.frc.team3501.robot.Constants; +import org.usfirst.frc.team3501.robot.MathLib; import edu.wpi.first.wpilibj.CANTalon; import edu.wpi.first.wpilibj.CounterBase.EncodingType; @@ -8,33 +9,48 @@ import edu.wpi.first.wpilibj.DoubleSolenoid; import edu.wpi.first.wpilibj.Encoder; import edu.wpi.first.wpilibj.command.Subsystem; +/*** + * The Shooter consists of a platform and wheel, each controlled by + * separate motors. The piston controlling the platform pushes the ball onto the + * wheel. The wheel is controlled by a motor, which is running before the ball + * is pushed + * onto the wheel. The spinning wheel propels the ball. + * + * @author superuser + * + */ + public class Shooter extends Subsystem { private CANTalon shooter; - private CANTalon angleAdjuster; - private DoubleSolenoid punch; + private DoubleSolenoid hood, punch; private Encoder encoder; public Shooter() { shooter = new CANTalon(Constants.Shooter.PORT); - angleAdjuster = new CANTalon(Constants.Shooter.ANGLE_ADJUSTER_PORT); - punch = new DoubleSolenoid(Constants.Shooter.PUNCH_FORWARD_PORT, - Constants.Shooter.PUNCH_REVERSE_PORT); + hood = new DoubleSolenoid(Constants.Shooter.HOOD_FORWARD, + Constants.Shooter.HOOD_REVERSE); + punch = new DoubleSolenoid(Constants.Shooter.PUNCH_FORWARD, + Constants.Shooter.PUNCH_REVERSE); encoder = new Encoder(Constants.Shooter.ENCODER_PORT_A, Constants.Shooter.ENCODER_PORT_B, false, EncodingType.k4X); } - public double getCurrentSetPoint() { - return shooter.get(); + /*** + * This method checks to see if the ball has successfully passed through the + * intake rollers and is inside. + * + * @return whether the presence of the ball is true or false and returns the + * state of the condition (true or false). + */ + + public boolean isBallInside() { + return true; } public void setSpeed(double speed) { - if (speed > 1.0) - shooter.set(1.0); - else if (speed < -1.0) - shooter.set(-1.0); - else - shooter.set(speed); + speed = MathLib.constrain(speed, -1, 1); + shooter.set(speed); } public void stop() { @@ -46,15 +62,10 @@ public class Shooter extends Subsystem { } // Use negative # for decrement. Positive for increment. + public void changeSpeed(double change) { - double newSpeed = getCurrentSetPoint() + change; - if (newSpeed > 1.0) - shooter.set(1.0); - else if (newSpeed < -1.0) - shooter.set(-1.0); - else { - setSpeed(newSpeed); - } + double newSpeed = getSpeed() + change; + setSpeed(newSpeed); } // Punch Commands @@ -62,10 +73,22 @@ public class Shooter extends Subsystem { punch.set(Constants.Shooter.punch); } - public void resetPunch() { + public void retractPunch() { punch.set(Constants.Shooter.retract); } + public boolean isHoodOpen() { + return hood.get() == Constants.Shooter.open; + } + + public void openHood() { + hood.set(Constants.Shooter.open); + } + + public void closeHood() { + hood.set(Constants.Shooter.closed); + } + @Override protected void initDefaultCommand() { }