public final static int REVERSE_INTAKE_PORT = 4;
public static final int INCREASE_SHOOTER_SPEED_PORT = 6;
public static final int DECREASE_SHOOTER_SPEED_PORT = 2;
+
+ public static final int CHANGE_CAMERA_VIEW = 6;
+
public static final int BRAKE_CANTALONS_PORT = 5;
public static final int COAST_CANTALONS_PORT = 3;
+
}
public static class Shooter {
public final static int HALL_EFFECT_PORT = 9;
+ public final static int TOGGLE_INDEXER = 8;
+
public static final int MODULE_NUMBER = 10, PISTON_FORWARD = 4,
PISTON_REVERSE = 5;
+
public static final Value HIGH_GEAR = DoubleSolenoid.Value.kForward;
public static final Value LOW_GEAR = DoubleSolenoid.Value.kReverse;
}
public static final Value HIGH_GEAR = DoubleSolenoid.Value.kForward;
public static final Value LOW_GEAR = DoubleSolenoid.Value.kReverse;
+ public final static int TOGGLE_DRIVE_PISTON = 7;
+
// MOTOR CONTROLLERS
public static final int FRONT_LEFT = 1;
public static final int FRONT_RIGHT = 3;
package org.usfirst.frc.team3501.robot;
-import org.usfirst.frc.team3501.robot.commands.driving.BrakeCANTalons;
-import org.usfirst.frc.team3501.robot.commands.driving.CoastCANTalons;
import org.usfirst.frc.team3501.robot.commands.driving.ToggleGear;
import org.usfirst.frc.team3501.robot.commands.intake.ReverseIntakeContinuous;
import org.usfirst.frc.team3501.robot.commands.intake.RunIntakeContinuous;
import org.usfirst.frc.team3501.robot.commands.shooter.ReverseIndexWheelContinuous;
import org.usfirst.frc.team3501.robot.commands.shooter.RunFlyWheelContinuous;
import org.usfirst.frc.team3501.robot.commands.shooter.RunIndexWheelContinuous;
+import org.usfirst.frc.team3501.robot.commands.shooter.ToggleIndexerPiston;
+import org.usfirst.frc.team3501.robot.utils.ChangeCameraView;
import edu.wpi.first.wpilibj.Joystick;
import edu.wpi.first.wpilibj.buttons.Button;
import edu.wpi.first.wpilibj.buttons.JoystickButton;
-public class OI {
+public class OI /* implements KeyListener */ {
private static OI oi;
public static Joystick leftJoystick;
public static Joystick rightJoystick;
public static Button increaseShooterSpeed;
public static Button decreaseShooterSpeed;
+ private static Button changeCam;
+
+ private static Button togglePiston;
+ private static Button toggleDriveTrainPiston;
+
public static Button brakeCANTalons;
public static Button coastCANTalons;
public OI() {
+
leftJoystick = new Joystick(Constants.OI.LEFT_STICK_PORT);
rightJoystick = new Joystick(Constants.OI.RIGHT_STICK_PORT);
Constants.OI.DECREASE_SHOOTER_SPEED_PORT);
decreaseShooterSpeed.whenPressed(new DecreaseShootingSpeed());
+ changeCam = new JoystickButton(rightJoystick,
+ Constants.OI.CHANGE_CAMERA_VIEW);
+ changeCam.toggleWhenPressed(new ChangeCameraView());
+
+ togglePiston = new JoystickButton(rightJoystick,
+ Constants.Shooter.TOGGLE_INDEXER);
+ togglePiston.whenPressed(new ToggleIndexerPiston());
+
+ toggleDriveTrainPiston = new JoystickButton(rightJoystick,
+ Constants.DriveTrain.TOGGLE_DRIVE_PISTON);
+ toggleDriveTrainPiston.whenPressed(new ToggleGear());
+
brakeCANTalons = new JoystickButton(rightJoystick,
Constants.OI.BRAKE_CANTALONS_PORT);
brakeCANTalons.whenPressed(new BrakeCANTalons());
oi = new OI();
return oi;
}
+
+ /*
+ * @Override public void keyPressed(KeyEvent e) { if (e.getKeyCode() ==
+ * KeyEvent.VK_Z) { // Robot.swapCameraFeed();
+ * Robot.getShooter().runIndexWheel(); } }
+ *
+ * @Override public void keyReleased(KeyEvent e) { if (e.getKeyCode() ==
+ * KeyEvent.VK_Z) { // Robot.swapCameraFeed();
+ * Robot.getShooter().stopIndexWheel(); } }
+ *
+ * @Override public void keyTyped(KeyEvent e) { }
+ */
+
}
private static Shooter shooter;
private static OI oi;
private static Intake intake;
+ private static CameraServer server;
@Override
public void robotInit() {
shooter = Shooter.getShooter();
intake = Intake.getIntake();
- CameraServer server = CameraServer.getInstance();
+ server = CameraServer.getInstance();
UsbCamera climberCam = server.startAutomaticCapture("climbercam", 0);
UsbCamera intakeCam = server.startAutomaticCapture("intakecam", 1);
}
public static DriveTrain getDriveTrain() {
+
return DriveTrain.getDriveTrain();
}
return Intake.getIntake();
}
+ public static void swapCameraFeed() {
+ UsbCamera climberCam = server.startAutomaticCapture("climbercam", 1);
+ UsbCamera intakeCam = server.startAutomaticCapture("intakecam", 0);
+ }
+
// If the gear values do not match in the left and right piston, then they are
// both set to high gear
@Override
protected void execute() {
Value leftGearPistonValue = driveTrain.getLeftGearPistonValue();
Value rightGearPistonValue = driveTrain.getRightGearPistonValue();
+
if (leftGearPistonValue == Constants.DriveTrain.LOW_GEAR) {
driveTrain.setHighGear();
} else {
driveTrain.setLowGear();
}
+
}
@Override
import org.usfirst.frc.team3501.robot.Constants;
import org.usfirst.frc.team3501.robot.Robot;
import org.usfirst.frc.team3501.robot.subsystems.Shooter;
-
+import edu.wpi.first.wpilibj.Timer;
import edu.wpi.first.wpilibj.command.Command;
/**
*/
public class RunIndexWheelContinuous extends Command {
private Shooter shooter = Robot.getShooter();
+ private Timer t = new Timer();
/**
* See JavaDoc comment in class for details
@Override
protected void initialize() {
+ t.start();
}
@Override
protected void execute() {
- if (timeSinceInitialized() % 0.5 <= 0.02) {
+ if (t.get() >= 1) {
if (Shooter.getShooter().getPistonValue() == Constants.Shooter.LOW_GEAR) {
Shooter.getShooter().setHighGear();
} else {
Shooter.getShooter().setLowGear();
}
+ t.reset();
}
- double shooterSpeed = shooter.getShooterRPM();
- double targetShooterSpeed = shooter.getTargetShootingSpeed();
- double threshold = shooter.getRPMThreshold();
- if (Math.abs(shooterSpeed - targetShooterSpeed) <= threshold)
+ if (shooter.isShooterRPMWithinRangeOfTargetSpeed(25))
shooter.runIndexWheel();
+
}
@Override
--- /dev/null
+package org.usfirst.frc.team3501.robot.commands.shooter;
+
+import org.usfirst.frc.team3501.robot.Constants;
+import org.usfirst.frc.team3501.robot.Robot;
+import org.usfirst.frc.team3501.robot.subsystems.Shooter;
+
+import edu.wpi.first.wpilibj.command.Command;
+
+public class ToggleIndexerPiston extends Command {
+ private Shooter shooter = Robot.getShooter();
+
+ /**
+ * See JavaDoc comment in class for details
+ *
+ * @param motorVal
+ * value range from -1 to 1
+ */
+ public ToggleIndexerPiston() {
+ requires(shooter);
+ }
+
+ // Called just before this Command runs the first time
+ @Override
+ protected void initialize() {
+ }
+
+ // Called repeatedly when this Command is scheduled to run
+ @Override
+ protected void execute() {
+ if (shooter.getPistonValue() == Constants.Shooter.LOW_GEAR) {
+ shooter.setHighGear();
+ } else {
+ shooter.setLowGear();
+ }
+ }
+
+ // Called once after isFinished returns true
+ @Override
+ protected void end() {
+ }
+
+ // 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;
+
+ }
+
+}
private static final double DEFAULT_INDEXING_MOTOR_VALUE = -0.75;
private static final double DEFAULT_SHOOTING_SPEED = 3100; // rpm
private static final double SHOOTING_SPEED_INCREMENT = 50;
+ private static final int ACCEPTABLE_SHOOTING_DEVIATION = 300;
private double targetShootingSpeed = DEFAULT_SHOOTING_SPEED;
private double currentShooterMotorValue = 0;
private void changeGear(DoubleSolenoid.Value gear) {
piston.set(gear);
}
+
+ public boolean isShooterRPMAtTargetSpeed() {
+ return isShooterRPMWithinRangeOfTargetSpeed(ACCEPTABLE_SHOOTING_DEVIATION);
+ }
+
+ public boolean isShooterRPMWithinRangeOfTargetSpeed(int acceptableRPMError) {
+ double shooterSpeed = getShooterRPM();
+ if (shooterSpeed > DEFAULT_SHOOTING_SPEED - acceptableRPMError
+ && shooterSpeed < DEFAULT_SHOOTING_SPEED + acceptableRPMError) {
+ return true;
+ }
+ return false;
+ }
}
--- /dev/null
+package org.usfirst.frc.team3501.robot.utils;
+
+import org.usfirst.frc.team3501.robot.Robot;
+
+import edu.wpi.first.wpilibj.command.Command;
+
+/**
+ *
+ */
+public class ChangeCameraView extends Command {
+
+ public ChangeCameraView() {
+ }
+
+ @Override
+ protected void initialize() {
+ }
+
+ @Override
+ protected void execute() {
+ Robot.swapCameraFeed();
+ }
+
+ @Override
+ protected boolean isFinished() {
+ return true;
+ }
+
+ @Override
+ protected void end() {
+ }
+
+ @Override
+ protected void interrupted() {
+ }
+}