-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCopy of Catapult.cpp.bak
140 lines (122 loc) · 3.33 KB
/
Copy of Catapult.cpp.bak
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include "Catapult.h"
const float MIN_FIRING_TIME_IN_SECONDS = 1.0;
Catapult::Catapult(Controllers* driverInput, Feeder* feeder, int catapaultPWM, int limitSwitch, int red, int blue)
{
this->driverInput = driverInput;
ChooChooMotor = new Victor(catapaultPWM);
LimitSwitch = new DigitalInput(limitSwitch);
catapultState = CATAPULT_STATE_ARM;
MaxChooChooMotorSpeed = 0.8;
timer = new Timer();
timer->Reset();
CatapultArmed = false;
SmartDashboard::PutNumber("Catapaut State Constructor", catapultState);
redled = new Relay(red);
blueled = new Relay(blue);
lighttimer = new Timer();
lighttimer->Start();
this->feeder = feeder;
}
void Catapult::SetState(CATAPULT_STATE state)
{
catapultState = state;
}
void Catapult::SetSafeToFire(bool safeFire)
{
SafeToFire = safeFire;
}
void Catapult::GetInputs()
{
CommandToFire = driverInput->IsFireButtonPressed();
//CatapultArmed = (!LeftLimitSwitch->Get() || !RightLimitSwitch->Get() || driverInput->IsDebugArmButtonPressed());
CatapultArmed = (!LimitSwitch->Get());// || driverInput->IsDebugArmButtonPressed());
SmartDashboard::PutBoolean("Catapult Button", LimitSwitch->Get());
}
void Catapult::ExecStep(void)
{
SafeToFire = feeder->GetAngle()<85;
//ChooChooMotorSpeed = MaxChooChooMotorSpeed;
SmartDashboard::PutBoolean("Catapaut Armed", CatapultArmed);
SmartDashboard::PutNumber("Catapaut State", catapultState);
switch (catapultState)
{
case CATAPULT_STATE_ARM:
if (lighttimer->Get()<0.25) {
redled->Set(redled->kOn);
blueled->Set(blueled->kOff);
}
else if(lighttimer->Get()<0.5){
blueled->Set(blueled->kOn);
redled->Set(redled->kOff);
}
else {
lighttimer->Reset();
}
SmartDashboard::PutString("Arm State", "Arm");
if (CatapultArmed)
{
ChooChooMotorSpeed = 0.0;
catapultState = CATAPULT_STATE_ARMED;
}
else
{
ChooChooMotorSpeed = MaxChooChooMotorSpeed;
}
break;
case CATAPULT_STATE_ARMED:
redled->Set(redled->kOff);
blueled->Set(blueled->kOff);
SmartDashboard::PutString("Arm State", "Armed");
ChooChooMotorSpeed = 0.0;
if (CommandToFire)
{
catapultState = CATAPULT_STATE_FIRE;
}
break;
case CATAPULT_STATE_FIRE:
SmartDashboard::PutString("Arm State", "Fire");
feeder->SetState(feeder->FEEDER_STATE_DOWN);
if (SafeToFire)
{
ChooChooMotorSpeed = MaxChooChooMotorSpeed;
catapultState = CATAPULT_STATE_FIRING;
timer->Reset();
timer->Start();
}
/*if (!CatapultArmed)
{
ChooChooMotorSpeed = 0.0;
catapultState = CATAPULT_STATE_ARM;
}*/
break;
case CATAPULT_STATE_FIRING:
if (lighttimer->Get()<0.25) {
redled->Set(redled->kOn);
blueled->Set(blueled->kOff);
}
else if(lighttimer->Get()<0.5){
blueled->Set(blueled->kOn);
redled->Set(redled->kOff);
}
else {
lighttimer->Reset();
}
SmartDashboard::PutString("Arm State", "Firing");
if (timer->Get() >= MIN_FIRING_TIME_IN_SECONDS)
{
catapultState = CATAPULT_STATE_ARM;
}
ChooChooMotorSpeed = MaxChooChooMotorSpeed;
break;
}
SmartDashboard::PutNumber("choochoomotorspeed", ChooChooMotorSpeed);
SmartDashboard::PutNumber("state", catapultState);
}
Feeder* Catapult::GetFeeder(){
return feeder;
}
void Catapult::SetOutputs()
{
SmartDashboard::PutNumber("choochoomotorspeed2", ChooChooMotorSpeed);
ChooChooMotor->Set(ChooChooMotorSpeed);
}