This code was the main function that executed the robot task completion functions.
#ifndef FINALCOMPETITIONMAIN_H
#define FINALCOMPETITIONMAIN_H
class FinalCompetitionMain {
public:
void Run();
private:
int breakpoint();
};
extern FinalCompetitionMain FinalCompetition;
#endif // FINALCOMPETITIONMAIN_H
// Required FEH libraries
#include <FEHLCD.h>
#include <FEHIO.h>
// Require custom libraries
#include "constants.h"
#include "worldstate.h"
#include "start.h"
#include "toggles.h"
#include "supplies.h"
#include "ramp.h"
#include "fuelbutton.h"
#include "launchbutton.h"
#include "FinalCompetitionMain.h"
// Declare object FinalCompetition of class FinalCompetitionMain
FinalCompetitionMain FinalCompetition;
/* This function adds a breakpoints to either continue or quit from the program.
*/
int FinalCompetitionMain::breakpoint() {
if (false) {
LCD.WriteRC("Press left button to", 5, 3);
LCD.WriteRC("continue...", 6, 3);
LCD.WriteRC("or middle to quit.", 7, 3);
while(!button.LeftPressed() && !button.MiddlePressed());
if (button.MiddlePressed()) {
closeLog();
return 1;
}
while(!button.LeftReleased() && !button.MiddleReleased());
return 0;
}
return 0;
} // end breakpoint function
/* This function is a subprogram for the Final Competition that is run from the RobotMainMenu.
* Last Modified: 3/14/2016 JKL
*/
void FinalCompetitionMain::Run() {
start();
togglesBottom();
if (FinalCompetition.breakpoint())
return;
pickupSupplies();
if (FinalCompetition.breakpoint())
return;
tempRamp();
if (FinalCompetition.breakpoint())
return;
fuelbutton();
if (FinalCompetition.breakpoint())
return;
dropOffSupplies();
if (FinalCompetition.breakpoint())
return;
togglesTop();
if (FinalCompetition.breakpoint())
return;
mainRamp();
if (FinalCompetition.breakpoint())
return;
launchButton();
return;
} // end FinalCompetitionMain::Run function
We also had another version that was slightly faster but less reliable. This version was not used at the final competition.
#ifndef FINALCOMPETITIONFASTMAIN_H
#define FINALCOMPETITIONFASTMAIN_H
class FinalCompetitionFastMain {
public:
void Run();
private:
int breakpoint();
};
extern FinalCompetitionFastMain FinalCompetitionFast;
#endif // FINALCOMPETITIONFASTMAIN_H
// Required FEH libraries
#include <FEHLCD.h>
#include <FEHIO.h>
// Require custom libraries
#include "constants.h"
#include "worldstate.h"
#include "start.h"
#include "toggles_fast.h"
#include "supplies.h"
#include "ramp_fast.h"
#include "fuelbutton.h"
#include "launchbutton_fast.h"
#include "FinalCompetitionFastMain.h"
// Declare object FinalCompetition of class FinalCompetitionFastMain
FinalCompetitionFastMain FinalCompetitionFast;
/* This function adds a breakpoints to either continue or quit from the program.
*/
int FinalCompetitionFastMain::breakpoint() {
if (false) {
LCD.WriteRC("Press left button to", 5, 3);
LCD.WriteRC("continue...", 6, 3);
LCD.WriteRC("or middle to quit.", 7, 3);
while(!button.LeftPressed() && !button.MiddlePressed());
if (button.MiddlePressed()) {
closeLog();
return 1;
}
while(!button.LeftReleased() && !button.MiddleReleased());
return 0;
}
return 0;
} // end breakpoint function
/* This function is a subprogram for the Final Competition that is run from the RobotMainMenu.
* Last Modified: 4/6/2016 JKL
*/
void FinalCompetitionFastMain::Run() {
start();
togglesBottom_fast();
if (FinalCompetitionFast.breakpoint())
return;
pickupSupplies();
if (FinalCompetitionFast.breakpoint())
return;
tempRamp_fast();
if (FinalCompetitionFast.breakpoint())
return;
fuelbutton();
if (FinalCompetitionFast.breakpoint())
return;
dropOffSupplies();
if (FinalCompetitionFast.breakpoint())
return;
togglesTop_fast();
if (FinalCompetitionFast.breakpoint())
return;
mainRamp_fast();
if (FinalCompetitionFast.breakpoint())
return;
launchButton_fast();
return;
} // end FinalCompetitionMain::Run function