X-Git-Url: http://challenge-bot.com/repos/?a=blobdiff_plain;f=src%2Forg%2Fusfirst%2Ffrc%2Fteam3501%2Frobot%2Fsubsystems%2FShooter.java;h=6e0c7acfb443a9106e46ed27d0c40e985732ebf4;hb=68e554b243aad0de65f60658ff21ec893119d526;hp=f164ddfae39c6b623976bf9c1bf65ffc285d957b;hpb=4b29730e0f3ca76a37b2fb38222abbcd6d360b7a;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 f164ddfa..6e0c7acf 100755 --- a/src/org/usfirst/frc/team3501/robot/subsystems/Shooter.java +++ b/src/org/usfirst/frc/team3501/robot/subsystems/Shooter.java @@ -1,8 +1,8 @@ package org.usfirst.frc.team3501.robot.subsystems; import org.usfirst.frc.team3501.robot.Constants; -import org.usfirst.frc.team3501.robot.Lidar; -import org.usfirst.frc.team3501.robot.MathLib; +import org.usfirst.frc.team3501.robot.sensors.Lidar; +import org.usfirst.frc.team3501.robot.sensors.Photogate; import edu.wpi.first.wpilibj.CANTalon; import edu.wpi.first.wpilibj.CounterBase.EncodingType; @@ -22,21 +22,24 @@ import edu.wpi.first.wpilibj.command.Subsystem; public class Shooter extends Subsystem { private CANTalon shooter; - private DoubleSolenoid hood, punch; + private DoubleSolenoid hood1, hood2, punch; private Encoder encoder; private Lidar lidar; + private Photogate photogate; + private boolean usePhotoGate; public Shooter() { shooter = new CANTalon(Constants.Shooter.PORT); - hood = new DoubleSolenoid(Constants.Shooter.HOOD_FORWARD, + hood1 = new DoubleSolenoid(Constants.Shooter.HOOD_FORWARD, + Constants.Shooter.HOOD_REVERSE); + hood2 = new DoubleSolenoid(Constants.Shooter.HOOD_FORWARD, Constants.Shooter.HOOD_REVERSE); punch = new DoubleSolenoid(Constants.Shooter.PUNCH_FORWARD, Constants.Shooter.PUNCH_REVERSE); encoder = new Encoder(Constants.Shooter.ENCODER_PORT_A, Constants.Shooter.ENCODER_PORT_B, false, EncodingType.k4X); - - lidar = new Lidar(Constants.Shooter.LIDAR_I2C_PORT); + usePhotoGate = true; } /*** @@ -48,19 +51,21 @@ public class Shooter extends Subsystem { */ public boolean isBallInside() { - return true; - } - public void setSpeed(double speed) { - speed = MathLib.constrain(speed, -1, 1); - shooter.set(speed); + if (usePhotogate()) + return photogate.isBallPresent(); + else + return true; + } - // This getDistance() will return the distance using the lidar from the - // desired target during match. - public double getDistance() { - double distance = lidar.getDistance(); - return distance; + public void setSpeed(double speed) { + if (speed > 1.0) + shooter.set(1.0); + else if (speed < -1.0) + shooter.set(-1.0); + else + shooter.set(speed); } public void stop() { @@ -71,6 +76,17 @@ public class Shooter extends Subsystem { return encoder.getRate(); } + /* + * We are going to map a lidar distance to a shooter speed that will be set to + * the shooter. This function does not yet exist so we will just use y=x but + * when testing commences we shall create the function + */ + public double getShooterSpeed() { + double distanceToGoal = lidar.getDistance(); + double shooterSpeed = distanceToGoal; // Function to be determined + return shooterSpeed; + } + // Use negative # for decrement. Positive for increment. public void changeSpeed(double change) { @@ -79,7 +95,7 @@ public class Shooter extends Subsystem { } // Punch Commands - public void punch() { + public void extendPunch() { punch.set(Constants.Shooter.punch); } @@ -87,16 +103,29 @@ public class Shooter extends Subsystem { punch.set(Constants.Shooter.retract); } - public boolean isHoodOpen() { - return hood.get() == Constants.Shooter.open; + public void raiseHood() { + hood1.set(Constants.Shooter.open); + hood2.set(Constants.Shooter.open); + } + + public void lowerHood() { + hood1.set(Constants.Shooter.closed); + hood2.set(Constants.Shooter.closed); + } + + public boolean isHoodDown() { + if (hood1.get() == Constants.Shooter.open + && hood2.get() == Constants.Shooter.open) + return true; + return false; } - public void openHood() { - hood.set(Constants.Shooter.open); + public boolean usePhotogate() { + return this.usePhotoGate; } - public void closeHood() { - hood.set(Constants.Shooter.closed); + public void togglePhotoGate() { + this.usePhotoGate = !this.usePhotoGate; } @Override