diff --git a/src/AutonomousMode.h b/src/AutonomousMode.h new file mode 100644 index 0000000..edb96e9 --- /dev/null +++ b/src/AutonomousMode.h @@ -0,0 +1,24 @@ +/* + * AutonomousMode.h + * + * Created on: Feb 18, 2016 + * Author: Benjamin + */ + +#ifndef AUTONOMOUSMODE_H +#define AUTONOMOUSMODE_H + + +class AutonomousMode{ + +private: + +public: + int slotnum; + + AutonomousMode(int slot): slotnum(slot){}; +}; + + + +#endif /* SRC_AUTONOMOUSMODES_H_ */ diff --git a/src/ModeNum.h b/src/ModeNum.h new file mode 100644 index 0000000..c9dee4d --- /dev/null +++ b/src/ModeNum.h @@ -0,0 +1,17 @@ +/* + * ModeNum.h + * + * Created on: Feb 18, 2016 + * Author: Benjamin + */ + +#ifndef MODENUM_H +#define MODENUM_H + +enum slot{ + slot1, slot2, slot3, slot4, slot5 +}; + + + +#endif /* SRC_MODENUM_H_ */ diff --git a/src/Robot.cpp b/src/Robot.cpp index bf03a83..5958a9c 100644 --- a/src/Robot.cpp +++ b/src/Robot.cpp @@ -1,3 +1,4 @@ +#include #include "WPILib.h" #include @@ -6,6 +7,8 @@ #include "Subsystems/Shooter.h" #include "Subsystems/BallCollector.h" +#include "ModeNum.h" +#include class Robot: public IterativeRobot { private: @@ -17,6 +20,17 @@ class Robot: public IterativeRobot { std::unique_ptr shooter; std::unique_ptr ball_collector; + // Chooosing an autonomous program + SendableChooser* chooser; + int slot_number; + + std::chrono::milliseconds ms; + + float distance1[5] = {22.20244104688751*12, 24.60806716851051*12, 17.39119351980729*12, 18.61805812566858*12, 25.83493649053858*12}; + float angle1[5] = {0, 0, -M_PI/6, M_PI/6, 0}; + float distance2[5] = {0, 0, 12*25/3, 12*25/3, 0}; + float angle2[5] = {M_PI/3, M_PI/3, M_PI/2, -M_PI/2, -M_PI/3}; + void RobotInit() { // Input devices controller = std::unique_ptr(new XboxController(0)); @@ -25,6 +39,15 @@ class Robot: public IterativeRobot { drive_train = std::unique_ptr (new Drivetrain()); shooter = std::unique_ptr (new Shooter()); ball_collector = std::unique_ptr (new BallCollector()); + + // Choosing an autonomous program + chooser = new SendableChooser(); + chooser->AddDefault("Slot 1", new AutonomousMode(0)); + chooser->AddObject("Slot 2", new AutonomousMode(1)); + chooser->AddObject("Slot 3", new AutonomousMode(2)); + chooser->AddObject("Slot 4", new AutonomousMode(3)); + chooser->AddObject("Slot 5", new AutonomousMode(4)); + SmartDashboard::PutData("Autonomous modes:", chooser); } /** @@ -49,12 +72,25 @@ class Robot: public IterativeRobot { * or additional comparisons to the if-else structure below with additional strings & commands. */ void AutonomousInit() { - /* std::string autoSelected = SmartDashboard::GetString("Auto Selector", "Default"); - if(autoSelected == "My Auto") { - autonomousCommand.reset(new MyAutoCommand()); - } else { - autonomousCommand.reset(new ExampleCommand()); - } */ + + slot_number = ((AutonomousMode*) chooser->GetSelected())->slotnum; + drive_train->DriveDistance(distance1[slot_number]); + drive_train->TurnAngle(angle1[slot_number]); + drive_train->DriveDistance(distance2[slot_number]); + drive_train->TurnAngle(angle2[slot_number]); + shooter->run_shooter(); + ms = std::chrono::duration_cast( + std::chrono::system_clock::now().time_since_epoch() + ); + while (!ms.count()+500Start(); + while (!ms.count()+1000Stop(); + shooter->stop_shooter(); } void AutonomousPeriodic() { diff --git a/src/Subsystems/Drivetrain.cpp b/src/Subsystems/DriveTrain.cpp similarity index 100% rename from src/Subsystems/Drivetrain.cpp rename to src/Subsystems/DriveTrain.cpp diff --git a/src/Subsystems/Drivetrain.h b/src/Subsystems/DriveTrain.h similarity index 95% rename from src/Subsystems/Drivetrain.h rename to src/Subsystems/DriveTrain.h index db240c6..f9a270a 100644 --- a/src/Subsystems/Drivetrain.h +++ b/src/Subsystems/DriveTrain.h @@ -23,6 +23,7 @@ class Drivetrain: public Subsystem { void ArcadeDrive(float magnitude, float rotate); void DriveDistance(float distance); + void TurnAngle(float angle); }; #endif