Ravens Robotics FRC 2015
RobotArms.cpp
Go to the documentation of this file.
1 
10 #include "RobotArms.h"
11 
13  // TODO Auto-generated constructor stub
14  m_DoubleSolenoid = NULL;
15  m_ControlStick = NULL;
16  m_ArmMotor = NULL;
17  m_TopLimit = NULL;
18  m_BottomLimit = NULL;
19  m_Limit = NULL;
20  m_DriveCounter = NULL;
21 
22  k_minCount = 0;
23  k_maxCount = 0;
24 
25  openArms = false;
26  liftSpeed = 0;
27 
28 }
29 
31  // Delete allocated member objects
32  delete m_DoubleSolenoid; m_DoubleSolenoid = NULL;
33  delete m_ControlStick; m_ControlStick = NULL;
34  delete m_ArmMotor; m_ArmMotor = NULL;
35  delete m_Limit; m_Limit = NULL;
36  delete m_TopLimit; m_TopLimit = NULL;
37  delete m_BottomLimit; m_BottomLimit = NULL;
38 }
40  if (!m_ArmMotor) m_ArmMotor = new Victor(kArmMotorChannel);
42  if (!m_ControlStick) m_ControlStick = new Joystick(kStickChannel);
43  if (!m_TopLimit) m_TopLimit = new DigitalInput(kTopLimitChannel);
44  if (!m_BottomLimit) m_BottomLimit = new DigitalInput(kBottomLimitChannel);
45  if (!m_Limit) m_Limit = new DigitalInput(kLimitChannel);
46 
47  CalibrateArms();
48 }
50  if (m_ControlStick->GetRawAxis(2) >= 0.1){
51  liftSpeed = 0.5;
52  }
53  else if (m_ControlStick->GetRawAxis(2) <= -0.1){
54  liftSpeed = -0.5;
55  }
56  else {
57  liftSpeed = 0;
58  }
59 
60  if (m_ControlStick->GetRawButton(5)|| m_ControlStick->GetRawButton(6)){
61  openArms = true;
62  }
63  else{
64  openArms = false;
65  }
66 }
67 
69  m_ArmMotor->Set(liftSpeed);
70 
71  if (openArms){
72  m_DoubleSolenoid->Set(DoubleSolenoid::kForward);
73  }
74  else{
75  m_DoubleSolenoid->Set(DoubleSolenoid::kReverse);
76  }
77 
78 }
79 
81  liftSpeed = -0.5;
82  while (!m_BottomLimit->Get()){
83  m_ArmMotor->Set(liftSpeed);
84  }
85  m_ArmMotor->StopMotor();
86 
87  liftSpeed = 0.5;
88  // TODO Set Encoder Value to Zero
89  while (!m_TopLimit->Get()){
90  m_ArmMotor->Set(liftSpeed);
91  }
92  m_ArmMotor->StopMotor();
93 
94  //TODO Set Maxlift to encoder value
95  liftSpeed = -0.5;
96  while (!m_BottomLimit->Get()){
97  m_ArmMotor->Set(liftSpeed);
98  }
99  m_ArmMotor->StopMotor();
100  liftSpeed = 0.0;
101 }
virtual void Sense()
Definition: RobotArms.cpp:49
Header file for Arms component.
Joystick * m_ControlStick
Secondary arm control stick.
Definition: RobotArms.h:38
virtual void DoWork()
Definition: RobotArms.cpp:68
float k_minCount
Number of encoder counts to reach bottom.
Definition: RobotArms.h:62
Encoder * m_DriveCounter
Definition: RobotArms.h:44
virtual void ComponentInit()
Definition: RobotArms.cpp:39
const int kLimitChannel
Definition: RobotArms.h:51
float k_maxCount
Number of encoder counts to reach top.
Definition: RobotArms.h:63
int liftSpeed
Lifting speed of the arms.
Definition: RobotArms.h:64
DoubleSolenoid * m_DoubleSolenoid
DoubleSolenoid Controls.
Definition: RobotArms.h:39
const int kBottomLimitChannel
Definition: RobotArms.h:55
bool openArms
Used to tell robot to open/close arms.
Definition: RobotArms.h:65
const int kArmMotorChannel
Channel of Victor.
Definition: RobotArms.h:49
const int kTopLimitChannel
Definition: RobotArms.h:52
DigitalInput * m_Limit
Definition: RobotArms.h:43
DigitalInput * m_TopLimit
Definition: RobotArms.h:41
const int kSolenoidChannel1
First Solenoid Channel.
Definition: RobotArms.h:47
DigitalInput * m_BottomLimit
Definition: RobotArms.h:42
const int kSolenoidChannel2
Second Solenoid Channel.
Definition: RobotArms.h:48
Victor * m_ArmMotor
Arm lifting motor.
Definition: RobotArms.h:40
virtual ~RobotArms()
Definition: RobotArms.cpp:30
void CalibrateArms()
Definition: RobotArms.cpp:80
const int kStickChannel
Joystick Channel.
Definition: RobotArms.h:46