X-Git-Url: http://challenge-bot.com/repos/?a=blobdiff_plain;f=src%2Forg%2Fusfirst%2Ffrc%2Fteam3501%2Frobot%2Fsubsystems%2FShooter.java;h=ee2742d2b0209e88c0cd18cd0b54fbebcd9c070b;hb=4b94da2f70ac1e3b8197a0712c68263e26cd68e6;hp=1d7fdb3cdfd62d678ab981125f2e5e638491d6b0;hpb=e8986b9b9e0e1b4cb654960e1f891cbfc38642a8;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 1d7fdb3c..ee2742d2 100755 --- a/src/org/usfirst/frc/team3501/robot/subsystems/Shooter.java +++ b/src/org/usfirst/frc/team3501/robot/subsystems/Shooter.java @@ -1,78 +1,83 @@ -package org.usfirst.frc.team3501.robot.subsystems; - -import org.usfirst.frc.team3501.robot.Constants; -import org.usfirst.frc.team3501.robot.Constants.Shooter.State; -import org.usfirst.frc.team3501.robot.Robot; - -import edu.wpi.first.wpilibj.CANTalon; -import edu.wpi.first.wpilibj.command.Subsystem; - -public class Shooter extends Subsystem { - private CANTalon shooter; - private State state; - - public Shooter() { - shooter = new CANTalon(Constants.Shooter.PORT); - state = State.STOPPED; - } - - public double getCurrentSpeed() { - return shooter.get(); - } - - public void setSpeed(double speed) { - state = State.RUNNING; - shooter.set(speed); - } - - public void shooterButtonsPressed() { - - if (Robot.oi.rightJoystick - .getRawButton(Constants.OI.INCREMENT_SHOOTER_PORT)) { - changeSpeed(0.1); - } - - if (Robot.oi.rightJoystick - .getRawButton(Constants.OI.DECREMENT_SHOOTER_PORT)) { - changeSpeed(-0.1); - } - - if (Robot.oi.rightJoystick.getRawButton(Constants.OI.TRIGGER_PORT)) { - if (this.getState() == State.STOPPED) - this.setSpeed(0.5); - } else { - if (this.getState() == State.RUNNING) { - this.stop(); - } - } - - if (Robot.oi.rightJoystick.getRawButton(Constants.OI.PRINT_PORT)) { - System.out.println("Current Shooter Speed: " + getCurrentSpeed()); - } - } - - private void stop() { - this.setSpeed(0.0); - } - - private State getState() { - return state; - } - - // Use negative # for decrement. Positive for increment. - public void changeSpeed(double change) { - if (getCurrentSpeed() + change >= 1.0) - shooter.set(1.0); - else if (getCurrentSpeed() + change <= -1.0) - shooter.set(-1.0); - else { - double newSpeed = getCurrentSpeed() + change; - setSpeed(newSpeed); - } - this.state = State.RUNNING; - } - - @Override - protected void initDefaultCommand() { - } -} +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; +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 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); + + encoder = new Encoder(Constants.Shooter.ENCODER_PORT_A, + Constants.Shooter.ENCODER_PORT_B, false, EncodingType.k4X); + } + + /*** + * 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) { + speed = MathLib.constrain(speed, -1, 1); + shooter.set(speed); + } + + public void stop() { + this.setSpeed(0.0); + } + + public double getSpeed() { + return encoder.getRate(); + } + + // Use negative # for decrement. Positive for increment. + + public void changeSpeed(double change) { + double newSpeed = getSpeed() + change; + setSpeed(newSpeed); + } + + // Punch Commands + public void punch() { + punch.set(Constants.Shooter.punch); + } + + public void retractPunch() { + punch.set(Constants.Shooter.retract); + } + + @Override + protected void initDefaultCommand() { + } +}