X-Git-Url: http://challenge-bot.com/repos/?a=blobdiff_plain;f=src%2Forg%2Fusfirst%2Ffrc%2Fteam3501%2Frobot%2Fcommands%2Fshooter%2FRunFlyWheelContinuous.java;h=fa5426e90a21580e42d14c76e7f2d98ef9ac72ed;hb=1782cbadb12ad13d30eab7597f656cbe17f48df2;hp=e317eea8c83e9d89c1b5ce66c1c20aba2fb9b1e9;hpb=0e77dfdedd8fe92dc6d8fb4ce58682cf37b9542b;p=3501%2F2017steamworks diff --git a/src/org/usfirst/frc/team3501/robot/commands/shooter/RunFlyWheelContinuous.java b/src/org/usfirst/frc/team3501/robot/commands/shooter/RunFlyWheelContinuous.java index e317eea..fa5426e 100644 --- a/src/org/usfirst/frc/team3501/robot/commands/shooter/RunFlyWheelContinuous.java +++ b/src/org/usfirst/frc/team3501/robot/commands/shooter/RunFlyWheelContinuous.java @@ -1,45 +1,70 @@ package org.usfirst.frc.team3501.robot.commands.shooter; +import org.usfirst.frc.team3501.robot.Robot; +import org.usfirst.frc.team3501.robot.subsystems.Shooter; +import org.usfirst.frc.team3501.robot.utils.PIDController; + import edu.wpi.first.wpilibj.command.Command; /** - * Runs fly wheel continuously when corresponding button pressed + * This command runs the fly wheel continuously at a set speed using a PID + * Controller when OI button managing fly wheel is pressed. The command will run + * the fly wheel motor until the button triggering it is released. + * + * Should only be run from the operator interface. * - * @param motorVal - * [-1,1] - * @author shaina + * pre-condition: This command must be run by a button in OI, with + * button.whileHeld(...). + * + * @author Shaina & Chris */ public class RunFlyWheelContinuous extends Command { - private double motorVal; + private Shooter shooter = Robot.getShooter(); + + private PIDController wheelController; + private double wheelP; + private double wheelI; + private double wheelD; + private double target; + private double shooterSpeed = 0; - public RunFlyWheelContinuous(double motorVal) { - this.motorVal = motorVal; + public RunFlyWheelContinuous() { + this.wheelP = this.shooter.wheelP; + this.wheelI = this.shooter.wheelI; + this.wheelD = this.shooter.wheelD; + this.wheelController = new PIDController(this.wheelP, this.wheelI, + this.wheelD); + this.wheelController.setDoneRange(10); + this.wheelController.setMaxOutput(1.0); + this.wheelController.setMinDoneCycles(3); + this.target = shooter.getCurrentShootingSpeed(); } - // Called just before this Command runs the first time @Override protected void initialize() { + this.wheelController.setSetPoint(this.target); } - // Called repeatedly when this Command is scheduled to run @Override protected void execute() { + double calculatedShooterIncrement = this.wheelController + .calcPID(this.shooter.getShooterRPM()); + shooterSpeed += calculatedShooterIncrement; + this.shooter.setFlyWheelMotorVal(shooterSpeed); } - // Called once after isFinished returns true @Override - protected void end() { + protected boolean isFinished() { + return false; } - // Called when another command which requires one or more of the same - // subsystems is scheduled to run @Override - protected void interrupted() { + protected void end() { + this.shooter.stopFlyWheel(); } @Override - protected boolean isFinished() { - return false; + protected void interrupted() { + end(); } - }