From 381dad77be9ae65d463812e2c2ad852363084219 Mon Sep 17 00:00:00 2001 From: Christopher Zhu Date: Sat, 4 Feb 2017 13:23:08 -0800 Subject: [PATCH] make code for pid fly wheel control --- .../commands/shooter/StartUpFlyWheel.java | 29 +++++++++++++++++-- .../team3501/robot/subsystems/Shooter.java | 5 ++++ 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src/org/usfirst/frc/team3501/robot/commands/shooter/StartUpFlyWheel.java b/src/org/usfirst/frc/team3501/robot/commands/shooter/StartUpFlyWheel.java index d0e07db..414641b 100644 --- a/src/org/usfirst/frc/team3501/robot/commands/shooter/StartUpFlyWheel.java +++ b/src/org/usfirst/frc/team3501/robot/commands/shooter/StartUpFlyWheel.java @@ -11,39 +11,62 @@ import edu.wpi.first.wpilibj.command.Command; */ public class StartUpFlyWheel extends Command { private Shooter shooter = Robot.getShooter(); + private double maxTimeOut; + private PIDController wheelController; private double wheelP; private double wheelI; private double wheelD; private double motorVal; private double target; - - public StartUpFlyWheel() { + + public StartUpFlyWheel(double speed, double maxTimeOut) { // Use requires() here to declare subsystem dependencies // eg. requires(chassis); requires(shooter); + + 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 = speed; } // Called just before this Command runs the first time protected void initialize() { - + this.wheelController.setSetPoint(this.target); } // Called repeatedly when this Command is scheduled to run 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() { + boolean isDone = this.wheelController.isDone(); + if (timeSinceInitialized() >= maxTimeOut || isDone) { + System.out.println("time: " + timeSinceInitialized()); + return true; + } return false; } // Called once after isFinished returns true protected void end() { + this.shooter.stopFlyWheel(); } // Called when another command which requires one or more of the same // subsystems is scheduled to run protected void interrupted() { + end(); } } diff --git a/src/org/usfirst/frc/team3501/robot/subsystems/Shooter.java b/src/org/usfirst/frc/team3501/robot/subsystems/Shooter.java index ba0f51c..f39f1ff 100644 --- a/src/org/usfirst/frc/team3501/robot/subsystems/Shooter.java +++ b/src/org/usfirst/frc/team3501/robot/subsystems/Shooter.java @@ -7,6 +7,7 @@ import com.ctre.CANTalon; import edu.wpi.first.wpilibj.command.Subsystem; public class Shooter extends Subsystem { + public double wheelP = 0.005, wheelI = 0.001, wheelD = -0.003; private static Shooter shooter; private final CANTalon flyWheel, indexWheel; @@ -72,4 +73,8 @@ public class Shooter extends Subsystem { protected void initDefaultCommand() { } + + public double getShooterSpeed() { + return 1.0; + } } -- 2.30.2