2016-01-28 11:33:19 -05:00
|
|
|
#include "WPILib.h"
|
2016-02-09 19:32:27 -05:00
|
|
|
//#include "TankDrive.h"
|
2016-02-03 07:50:19 -05:00
|
|
|
#include "Shooter.h"
|
2016-01-28 11:33:19 -05:00
|
|
|
|
2016-02-09 19:32:27 -05:00
|
|
|
|
2016-01-28 11:33:19 -05:00
|
|
|
/**
|
|
|
|
* This sample shows how to use the new CANTalon to just run a motor in a basic
|
|
|
|
* throttle mode, in the same manner as you might control a traditional PWM
|
|
|
|
* controlled motor.
|
|
|
|
*/
|
2016-02-07 23:05:59 -05:00
|
|
|
|
|
|
|
#ifndef BUTTON_LAYOUT
|
|
|
|
#define BUTTON_LAYOUT
|
|
|
|
|
2016-02-09 19:32:27 -05:00
|
|
|
#define TRIGGER 1
|
|
|
|
#define THUMB 2
|
2016-02-07 23:05:59 -05:00
|
|
|
|
2016-02-09 16:23:45 -05:00
|
|
|
#endif // BUTTON_LAYOUT
|
2016-02-07 23:05:59 -05:00
|
|
|
|
2016-02-02 09:41:15 -05:00
|
|
|
class Robot: public IterativeRobot {
|
2016-01-28 15:47:56 -05:00
|
|
|
CANTalon r1_drive;
|
|
|
|
CANTalon r2_drive;
|
|
|
|
CANTalon l1_drive;
|
|
|
|
CANTalon l2_drive;
|
2016-02-01 15:16:25 -05:00
|
|
|
CANTalon shooter1;
|
|
|
|
CANTalon shooter2;
|
2016-02-07 21:22:23 -05:00
|
|
|
CANTalon ramp;
|
2016-02-09 19:32:27 -05:00
|
|
|
// Counter ramp_lift;
|
|
|
|
RobotDrive drive;
|
2016-02-02 10:18:19 -05:00
|
|
|
Shooter shooter;
|
2016-02-02 09:41:15 -05:00
|
|
|
Joystick rstick, lstick;
|
2016-01-28 11:33:19 -05:00
|
|
|
|
|
|
|
// update every 0.01 seconds/10 milliseconds.
|
2016-02-02 09:41:15 -05:00
|
|
|
// The talon only receives control packets every 10ms.
|
2016-01-28 15:47:56 -05:00
|
|
|
//double kUpdatePeriod = 0.010;
|
2016-01-28 11:33:19 -05:00
|
|
|
|
|
|
|
public:
|
2016-02-02 09:41:15 -05:00
|
|
|
Robot() :
|
2016-02-02 10:18:19 -05:00
|
|
|
r1_drive(1), // right wheel 1
|
|
|
|
r2_drive(2), // right wheel 2
|
|
|
|
l1_drive(3), // left wheel 1
|
|
|
|
l2_drive(4), // left wheel 2
|
|
|
|
shooter1(10), // shooter drive 1
|
|
|
|
shooter2(11), // shooter drive 2
|
2016-02-07 21:22:23 -05:00
|
|
|
ramp(12),
|
2016-02-09 19:32:27 -05:00
|
|
|
drive( // initialize RobotDrive object.
|
|
|
|
&l1_drive, &r1_drive),
|
2016-02-02 10:18:19 -05:00
|
|
|
shooter( // initialize Shooter object.
|
2016-02-07 21:22:23 -05:00
|
|
|
&shooter1, &shooter2, &ramp),
|
2016-02-02 10:18:19 -05:00
|
|
|
rstick(0), // right stick (operator)
|
2016-02-09 19:32:27 -05:00
|
|
|
lstick(1)//, // left stick (driver)
|
|
|
|
//ramp_lift(1) // counter for the hall sensor on the
|
2016-02-02 10:18:19 -05:00
|
|
|
{
|
2016-02-02 09:41:15 -05:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void DisabledInit() {
|
|
|
|
r1_drive.SetSafetyEnabled(false);
|
|
|
|
r2_drive.SetSafetyEnabled(false);
|
|
|
|
l1_drive.SetSafetyEnabled(false);
|
|
|
|
l2_drive.SetSafetyEnabled(false);
|
|
|
|
shooter1.SetSafetyEnabled(false);
|
|
|
|
shooter2.SetSafetyEnabled(false);
|
|
|
|
}
|
|
|
|
|
|
|
|
void TeleopInit() {
|
|
|
|
r1_drive.Enable();
|
|
|
|
r2_drive.Enable();
|
|
|
|
l1_drive.Enable();
|
|
|
|
l2_drive.Enable();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void TeleopPeriodic() {
|
2016-02-09 19:32:27 -05:00
|
|
|
drive.ArcadeDrive(&lstick);
|
|
|
|
l2_drive.Set(l1_drive.Get());
|
|
|
|
r2_drive.Set(r1_drive.Get());
|
|
|
|
|
2016-02-02 09:41:15 -05:00
|
|
|
|
|
|
|
float power = (1.0 - rstick.GetThrottle()) / 2.0;
|
|
|
|
|
2016-02-09 19:32:27 -05:00
|
|
|
shooter.SetPower(power);
|
2016-02-07 23:05:59 -05:00
|
|
|
if(rstick.GetRawButton(TRIGGER))
|
|
|
|
{
|
|
|
|
// SHOOT THE BALL
|
2016-02-09 19:32:27 -05:00
|
|
|
ramp.Set(-1);
|
2016-02-07 23:05:59 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
if(rstick.GetRawButton(THUMB))
|
|
|
|
{
|
|
|
|
// lower the ramp
|
2016-02-09 19:32:27 -05:00
|
|
|
ramp.Set(1);
|
2016-02-07 23:05:59 -05:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
// raise the ramp to HALF (so it isn't down all the time!)
|
2016-02-08 19:26:44 -05:00
|
|
|
ramp.Set(0);
|
2016-02-07 23:05:59 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
// How to pickup?
|
2016-02-02 09:41:15 -05:00
|
|
|
}
|
2016-02-02 09:39:51 -05:00
|
|
|
|
2016-01-28 11:33:19 -05:00
|
|
|
};
|
|
|
|
|
|
|
|
START_ROBOT_CLASS(Robot)
|