import org.usfirst.frc.team3501.robot.Constants;
import org.usfirst.frc.team3501.robot.Lidar;
-import org.usfirst.frc.team3501.robot.MathLib;
import edu.wpi.first.wpilibj.CANTalon;
import edu.wpi.first.wpilibj.CounterBase.EncodingType;
*/
public class Shooter extends PIDSubsystem {
- private static double kp = 0.013, ki = 0.000015, kd = -0.002;
+ private static double sp = 0.015, si = 0, sd = 0;
private static double encoderTolerance = 5.0;
+ private static double pidOutput = 5.0;
private CANTalon shooter;
private DoubleSolenoid hood, punch;
private Lidar lidar;
public Shooter() {
- super(kp, ki, kd);
+ super(sp, si, sd);
shooter = new CANTalon(Constants.Shooter.PORT);
hood = new DoubleSolenoid(Constants.Shooter.HOOD_FORWARD,
}
public void setSpeed(double speed) {
- speed = MathLib.constrain(speed, -1, 1);
- shooter.set(speed);
+ setShooterPID();
+ setSetpoint(speed);
}
// This getDistance() will return the distance using the lidar from the
@Override
protected double returnPIDInput() {
- // TODO Auto-generated method stub
- return 0;
+ return sensorFeedback();
}
@Override
protected void usePIDOutput(double output) {
- // TODO Auto-generated method stub
+ shooter.set(output);
+ pidOutput = output;
+ }
+ private double sensorFeedback() {
+ return this.getSpeed();
}
- public void setEncoderPID() {
+ public void setShooterPID() {
+ this.updatePID();
this.setAbsoluteTolerance(encoderTolerance);
this.setOutputRange(-1.0, 1.0);
- this.setInputRange(-200.0, 200.0);
+ this.setInputRange(-500.0, 500.0);
this.enable();
}
+
+ public void updatePID() {
+ this.getPIDController().setPID(sp, si, sd);
+ }
}