X-Git-Url: http://challenge-bot.com/repos/?a=blobdiff_plain;f=src%2Forg%2Fusfirst%2Ffrc%2Fteam3501%2Frobot%2Fcommands%2Fshooter%2FRunFlyWheelContinuous.java;h=5e65b3d3a57adad7d08c8ea9c96859c0c56b2af6;hb=cf77d84e212b20171a5a3397b26fe7f98f4ba460;hp=13c3eceb18ef4c6d5a698c3311dc02d6ae42de68;hpb=973f0ac4729612ff4ed04086793e5513579c2496;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 13c3ece..5e65b3d 100644 --- a/src/org/usfirst/frc/team3501/robot/commands/shooter/RunFlyWheelContinuous.java +++ b/src/org/usfirst/frc/team3501/robot/commands/shooter/RunFlyWheelContinuous.java @@ -1,50 +1,74 @@ 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; /** - * This command will run the fly wheel motor continuously until the button + * This command runs the fly wheel continuously 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. + * * pre-condition: This command must be run by a button in OI, with * button.whileHeld(...). * - * @param motorVal - * [-1,1] * @author Shaina */ 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; + + public RunFlyWheelContinuous() { + // Use requires() here to declare subsystem dependencies + // eg. requires(chassis); + requires(shooter); - public RunFlyWheelContinuous(double motorVal) { - this.motorVal = motorVal; + 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(0.5); + this.wheelController.setMaxOutput(1.0); + this.wheelController.setMinDoneCycles(3); + this.target = this.shooter.CURRENT_SHOOTING_SPEED; } // 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 shooterSpeed = this.wheelController + .calcPID(this.shooter.getShooterSpeed()); + + this.shooter.setFlyWheelMotorVal(shooterSpeed); + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return false; } // Called once after isFinished returns true - @Override protected void end() { + this.shooter.stopFlyWheel(); } // Called when another command which requires one or more of the same // subsystems is scheduled to run - @Override protected void interrupted() { end(); } - - @Override - protected boolean isFinished() { - return false; - } - }