Move code in Shooter.h to a .cpp file
which is where it belongs. Grumble grumble
This commit is contained in:
parent
48339fdd4a
commit
93f166e1b8
1
.gitignore
vendored
1
.gitignore
vendored
@ -7,3 +7,4 @@ Robot2016/.settings
|
|||||||
Robot2016/sysProps.xml
|
Robot2016/sysProps.xml
|
||||||
FRCUserProgram
|
FRCUserProgram
|
||||||
/RemoteSystemsTempFiles/
|
/RemoteSystemsTempFiles/
|
||||||
|
*.o
|
||||||
|
@ -11,12 +11,12 @@ all: deploy
|
|||||||
|
|
||||||
build: FRCUserProgram
|
build: FRCUserProgram
|
||||||
|
|
||||||
FRCUserProgram: src/Robot.cpp
|
FRCUserProgram: src/Robot.cpp src/Shooter.o
|
||||||
@echo "Building FRCUserProgram"
|
@echo "Building FRCUserProgram"
|
||||||
$(CXX) $(CPPFLAGS) $< -o $@ $(LDFLAGS)
|
$(CXX) $(CPPFLAGS) $^ -o $@ $(LDFLAGS)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm FRCUserProgram
|
rm FRCUserProgram src/Shooter.o
|
||||||
|
|
||||||
deploy: build
|
deploy: build
|
||||||
@echo "Copying FRCUserProgram"
|
@echo "Copying FRCUserProgram"
|
||||||
|
151
Robot2016/src/Shooter.cpp
Normal file
151
Robot2016/src/Shooter.cpp
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
#include <WPILib.h>
|
||||||
|
#include "Shooter.h"
|
||||||
|
|
||||||
|
Shooter::Shooter(CANTalon *s1, CANTalon *s2, CANTalon *r) :
|
||||||
|
launcher(s1),
|
||||||
|
pickup(s2),
|
||||||
|
ramp(r),
|
||||||
|
ready(true),
|
||||||
|
state(READY)
|
||||||
|
{
|
||||||
|
// shooterDrive = new RobotDrive(s1, s2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Call this method on TeleopInit so that the ramp is properly
|
||||||
|
* set at the beginning of the match.
|
||||||
|
*/
|
||||||
|
|
||||||
|
Shooter::~Shooter()
|
||||||
|
{
|
||||||
|
delete launcher;
|
||||||
|
delete pickup;
|
||||||
|
delete ramp;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Shooter::StopShooter()
|
||||||
|
{
|
||||||
|
ready = true;
|
||||||
|
ramp->Set(0);
|
||||||
|
launcher->Set(0);
|
||||||
|
pickup->Set(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Shooter::LowerRamp()
|
||||||
|
{
|
||||||
|
ramp->Set(-RAMP_POWER);
|
||||||
|
if(ramp->Limits::kReverseLimit){
|
||||||
|
SmartDashboard::PutNumber("ramp", 2); //going to put a circlar dial to show where the ramp could be
|
||||||
|
} else {
|
||||||
|
SmartDashboard::PutNumber("ramp", 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Shooter::RaiseRamp()
|
||||||
|
{
|
||||||
|
ramp->Set(RAMP_POWER);
|
||||||
|
if(ramp->Limits::kForwardLimit){
|
||||||
|
SmartDashboard::PutNumber("ramp", 0); //going to put a circlar dial to show where the ramp could be
|
||||||
|
} else {
|
||||||
|
SmartDashboard::PutNumber("ramp", 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Shooter::StopRamp()
|
||||||
|
{
|
||||||
|
ramp->Set(0);
|
||||||
|
}
|
||||||
|
void Shooter::Shoot()
|
||||||
|
{
|
||||||
|
if (shotClock.Get() > (SPINUP_TIME + 0.1))
|
||||||
|
{
|
||||||
|
state = RESETTING;
|
||||||
|
}
|
||||||
|
switch (state)
|
||||||
|
{
|
||||||
|
case READY:
|
||||||
|
{
|
||||||
|
state = SPINNINGUP;
|
||||||
|
ramp->Set(-1);
|
||||||
|
launcher->Set(LAUNCH_POWER);
|
||||||
|
pickup->Set(LAUNCH_POWER);
|
||||||
|
shotClock.Reset();
|
||||||
|
shotClock.Start();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case SPINNINGUP:
|
||||||
|
{
|
||||||
|
if (shotClock.Get() > SPINUP_TIME)
|
||||||
|
{
|
||||||
|
state = LAUNCH;
|
||||||
|
shotClock.Reset();
|
||||||
|
shotClock.Start();
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
//std::cout << "*Goku noises*\n";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case LAUNCH:
|
||||||
|
{
|
||||||
|
ramp->Set(LAUNCH_POWER);
|
||||||
|
state = LAUNCHING;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case LAUNCHING:
|
||||||
|
{
|
||||||
|
if (shotClock.Get() > LAUNCH_TIME)
|
||||||
|
{
|
||||||
|
|
||||||
|
state = RESETTING;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RESETTING:
|
||||||
|
{
|
||||||
|
ramp->Set(0);
|
||||||
|
launcher->Set(0);
|
||||||
|
pickup->Set(0);
|
||||||
|
state = READY;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ON_FIRE:
|
||||||
|
{
|
||||||
|
std::cout << "Something is wrong with the launch sequence.\n";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void Shooter::PickUp(bool state /*= true*/)
|
||||||
|
{
|
||||||
|
pickup->Set((float) (state * PICKUP_POWER));
|
||||||
|
launcher->Set((float) (state * PICKUP_POWER * -1));
|
||||||
|
//std::cout << "picking up!\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Call this to run the pickup backwards if the ball gets jammed somehow...
|
||||||
|
*/
|
||||||
|
void Shooter::Unjam()
|
||||||
|
{
|
||||||
|
pickup->Set(-1 * PICKUP_POWER);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Shooter::ShootLow()
|
||||||
|
{
|
||||||
|
pickup->Set(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Shooter::SetPower(float power)
|
||||||
|
{
|
||||||
|
pickup->Set(power);
|
||||||
|
launcher->Set(power);
|
||||||
|
//std::cout << "setting shooter power" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
int Shooter::GetState()
|
||||||
|
{
|
||||||
|
return state;
|
||||||
|
}
|
@ -14,7 +14,7 @@
|
|||||||
#define LAUNCH_TIME 0.5
|
#define LAUNCH_TIME 0.5
|
||||||
#define RAMP_POWER 0.3
|
#define RAMP_POWER 0.3
|
||||||
|
|
||||||
class Shooter
|
class Shooter
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -33,154 +33,19 @@ public:
|
|||||||
RESETTING
|
RESETTING
|
||||||
};
|
};
|
||||||
|
|
||||||
Shooter(CANTalon *s1, CANTalon *s2, CANTalon *r)
|
Shooter(CANTalon *s1, CANTalon *s2, CANTalon *r);
|
||||||
{
|
virtual ~Shooter();
|
||||||
// shooterDrive = new RobotDrive(s1, s2);
|
void StopShooter();
|
||||||
launcher = s1;
|
void LowerRamp();
|
||||||
pickup = s2;
|
void RaiseRamp();
|
||||||
ramp = r;
|
void StopRamp();
|
||||||
ready = true;
|
void Shoot();
|
||||||
state = READY;
|
void PickUp(bool state = true);
|
||||||
}
|
void Unjam();
|
||||||
|
void ShootLow();
|
||||||
|
void SetPower(float power);
|
||||||
|
int GetState();
|
||||||
|
|
||||||
/**
|
|
||||||
* Call this method on TeleopInit so that the ramp is properly
|
|
||||||
* set at the beginning of the match.
|
|
||||||
*/
|
|
||||||
|
|
||||||
virtual ~Shooter()
|
|
||||||
{
|
|
||||||
delete launcher;
|
|
||||||
delete pickup;
|
|
||||||
delete ramp;
|
|
||||||
}
|
|
||||||
|
|
||||||
void StopShooter()
|
|
||||||
{
|
|
||||||
ready = true;
|
|
||||||
ramp->Set(0);
|
|
||||||
launcher->Set(0);
|
|
||||||
pickup->Set(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void LowerRamp()
|
|
||||||
{
|
|
||||||
ramp->Set(-RAMP_POWER);
|
|
||||||
if(ramp->Limits::kReverseLimit){
|
|
||||||
SmartDashboard::PutNumber("ramp", 2); //going to put a circlar dial to show where the ramp could be
|
|
||||||
} else {
|
|
||||||
SmartDashboard::PutNumber("ramp", 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void RaiseRamp()
|
|
||||||
{
|
|
||||||
ramp->Set(RAMP_POWER);
|
|
||||||
if(ramp->Limits::kForwardLimit){
|
|
||||||
SmartDashboard::PutNumber("ramp", 0); //going to put a circlar dial to show where the ramp could be
|
|
||||||
} else {
|
|
||||||
SmartDashboard::PutNumber("ramp", 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void StopRamp()
|
|
||||||
{
|
|
||||||
ramp->Set(0);
|
|
||||||
}
|
|
||||||
void Shoot()
|
|
||||||
{
|
|
||||||
if (shotClock.Get() > (SPINUP_TIME + 0.1))
|
|
||||||
{
|
|
||||||
state = RESETTING;
|
|
||||||
}
|
|
||||||
switch (state)
|
|
||||||
{
|
|
||||||
case READY:
|
|
||||||
{
|
|
||||||
state = SPINNINGUP;
|
|
||||||
ramp->Set(-1);
|
|
||||||
launcher->Set(LAUNCH_POWER);
|
|
||||||
pickup->Set(LAUNCH_POWER);
|
|
||||||
shotClock.Reset();
|
|
||||||
shotClock.Start();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case SPINNINGUP:
|
|
||||||
{
|
|
||||||
if (shotClock.Get() > SPINUP_TIME)
|
|
||||||
{
|
|
||||||
state = LAUNCH;
|
|
||||||
shotClock.Reset();
|
|
||||||
shotClock.Start();
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
//std::cout << "*Goku noises*\n";
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case LAUNCH:
|
|
||||||
{
|
|
||||||
ramp->Set(LAUNCH_POWER);
|
|
||||||
state = LAUNCHING;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case LAUNCHING:
|
|
||||||
{
|
|
||||||
if (shotClock.Get() > LAUNCH_TIME)
|
|
||||||
{
|
|
||||||
|
|
||||||
state = RESETTING;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case RESETTING:
|
|
||||||
{
|
|
||||||
ramp->Set(0);
|
|
||||||
launcher->Set(0);
|
|
||||||
pickup->Set(0);
|
|
||||||
state = READY;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ON_FIRE:
|
|
||||||
{
|
|
||||||
std::cout << "Something is wrong with the launch sequence.\n";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void PickUp(bool state = true)
|
|
||||||
{
|
|
||||||
pickup->Set((float) (state * PICKUP_POWER));
|
|
||||||
launcher->Set((float) (state * PICKUP_POWER * -1));
|
|
||||||
//std::cout << "picking up!\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Call this to run the pickup backwards if the ball gets jammed somehow...
|
|
||||||
*/
|
|
||||||
void Unjam()
|
|
||||||
{
|
|
||||||
pickup->Set(-1 * PICKUP_POWER);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ShootLow()
|
|
||||||
{
|
|
||||||
pickup->Set(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetPower(float power)
|
|
||||||
{
|
|
||||||
pickup->Set(power);
|
|
||||||
launcher->Set(power);
|
|
||||||
//std::cout << "setting shooter power" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
int GetState()
|
|
||||||
{
|
|
||||||
return state;
|
|
||||||
}
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
//RobotDrive *shooterDrive;
|
//RobotDrive *shooterDrive;
|
||||||
@ -188,8 +53,8 @@ private:
|
|||||||
CANTalon *pickup;
|
CANTalon *pickup;
|
||||||
CANTalon *ramp;
|
CANTalon *ramp;
|
||||||
ShooterState state;
|
ShooterState state;
|
||||||
|
|
||||||
Timer shotClock;
|
Timer shotClock;
|
||||||
bool ready;
|
bool ready;
|
||||||
int fake_position;
|
int fake_position;
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user