make extend and retract intake arm piston methods and a command
[3501/stronghold-2016] / src / org / usfirst / frc / team3501 / robot / subsystems / IntakeArm.java
CommitLineData
7b11350e
KZ
1package org.usfirst.frc.team3501.robot.subsystems;
2
3import org.usfirst.frc.team3501.robot.Constants;
4
5import edu.wpi.first.wpilibj.CANTalon;
5cff8910 6import edu.wpi.first.wpilibj.DoubleSolenoid;
7b11350e
KZ
7import edu.wpi.first.wpilibj.command.Subsystem;
8
add57fee 9/***
1eb84222
SC
10 * The IntakeArm consists of two rollers that are controlled by one motor, with
11 * a potentiometer on it.
add57fee 12 *
dc394eb0
SG
13 * The motor controls the rollers, making them roll forwards and backwards. The
14 * Intake rollers are on the back of the robot. As the rollers run, they intake
15 * the ball.
add57fee
YA
16 *
17 * @author superuser
18 *
19 */
20
7b11350e 21public class IntakeArm extends Subsystem {
4e0d6389
LM
22
23 private CANTalon intakeRoller;
5cff8910 24 private DoubleSolenoid leftIntake, rightIntake;
54c588d9 25 public static double moveIntakeArmSpeed = 0;
4e0d6389
LM
26
27 public IntakeArm() {
28 intakeRoller = new CANTalon(Constants.IntakeArm.ROLLER_PORT);
5cff8910
ME
29
30 leftIntake = new DoubleSolenoid(Constants.IntakeArm.LEFT_FORWARD,
31 Constants.IntakeArm.LEFT_REVERSE);
32
33 rightIntake = new DoubleSolenoid(Constants.IntakeArm.RIGHT_FORWARD,
34 Constants.IntakeArm.RIGHT_REVERSE);
4e0d6389
LM
35 }
36
2781cca0
ME
37 public void retractPistons() {
38 leftIntake.set(Constants.IntakeArm.RETRACT);
39 rightIntake.set(Constants.IntakeArm.RETRACT);
40 }
41
42 public void extendPistons() {
43 leftIntake.set(Constants.IntakeArm.EXTEND);
44 rightIntake.set(Constants.IntakeArm.EXTEND);
45 }
46
4e0d6389
LM
47 /***
48 * This method sets the voltage of the motor to intake the ball. The voltage
49 * values are constants in Constants class
50 */
51 public void intakeBall() {
52 intakeRoller.set(Constants.IntakeArm.INTAKE_SPEED);
53 }
54
55 /***
56 * This method sets the voltage of the motor to output the ball. The voltage
57 * values are constants in Constants class
58 */
59 public void outputBall() {
60 intakeRoller.set(Constants.IntakeArm.OUTPUT_SPEED);
61 }
62
2b65c91d 63 public void stopRollers() {
33141cdd 64 intakeRoller.set(0);
2b65c91d
LM
65 }
66
4e0d6389
LM
67 /***
68 * This method gets you the current voltage of the motor that controls the
69 * intake arm roller. The range of voltage is from [-1,1]. A negative voltage
70 * makes the motor run backwards.
71 *
72 * @return Returns the voltage of the motor that controls the roller. The
73 * range of the voltage goes from [-1,1]. A negative voltage indicates
74 * that the motor is running backwards.
75 */
76
77 public double getRollerVoltage() {
78 return intakeRoller.get();
79 }
80
4e0d6389
LM
81 /***
82 * This method checks to see if the presence of the ball inside is true or
83 * false.
84 *
85 * @return Returns whether the ball is inside as true or false
86 */
87
88 public boolean isBallInside() {
89 return true;
90 }
91
92 /***
93 * This method checks to see if the motors controlling the rollers are
94 * currently running.
95 *
96 * @return Returns whether the motors are currently running, and returns the
97 * state of the condition (true or false).
98 *
99 */
100
101 public boolean areRollersRolling() {
42c4c734
LM
102 if (Math.abs(getRollerVoltage()) < 0.02)
103 return false;
4e0d6389
LM
104 return true;
105 }
106
4e0d6389
LM
107 @Override
108 protected void initDefaultCommand() {
109
110 }
7b11350e 111}