import org.usfirst.frc.team3501.robot.Constants.Defense;
import org.usfirst.frc.team3501.robot.commands.auton.ChooseStrategy;
import org.usfirst.frc.team3501.robot.commands.driving.SetLowGear;
+import org.usfirst.frc.team3501.robot.commands.intakearm.Photogate;
import org.usfirst.frc.team3501.robot.subsystems.DriveTrain;
import org.usfirst.frc.team3501.robot.subsystems.IntakeArm;
import org.usfirst.frc.team3501.robot.subsystems.Shooter;
public static DriveTrain driveTrain;
public static Shooter shooter;
public static IntakeArm intakeArm;
- // public static Photogate photogate;
+ public static Photogate photogate;
// Sendable Choosers send a drop down menu to the Smart Dashboard.
SendableChooser positionChooser;
intakeArm = new IntakeArm();
oi = new OI();
- // photogate = new Photogate();
+ photogate = new Photogate();
initializeSendableChoosers();
addPositionChooserOptions();
+package org.usfirst.frc.team3501.robot.commands.intakearm;
+import edu.wpi.first.wpilibj.AnalogInput;
+
+/***
+ * The photogate is a pair of IR LED and phototransistor sensor that uses a
+ * reflective method to sense the presence of the boulder within the robot's
+ * shooting chamber. This class specifically checks for the ball's presence
+ * using a threshold of voltages outputted from the phototransistor.
+ *
+ * @author niyatisriram
+ */
+public class Photogate extends AnalogInput {
+
+ private double threshold = 1.8;
+
+ /***
+ * The constructor inputs the channel of the transistor and the threshold
+ * value.
+ * The threshold is a specific value, representing the outputted voltage of
+ * the phototransistor. This value will be somewhere within the range [0,
+ * 4095] Find the value by testing and finding an average value for which the
+ * ball is present when the output is greater, and absent when the output is
+ * less.
+ */
+ public Photogate() {
+ super(0);
+ this.threshold = threshold;
+ }
+
+ /***
+ * @return whether the ball is present or not
+ * USE TO DECIDE WHEN OUTTAKE NEEDS TO HAPPEN FOR BALL TO BE SECURE
+ */
+ public boolean isBallPresent() {
+ if (this.getVoltage() > threshold)
+ return true;
+ else
+ return false;
+
+ }
+
+ /***
+ * @param threshold
+ * (range [0, 4095])
+ */
+ public void setThreshold(int threshold) {
+ this.threshold = threshold;
+ }
+}