Added shooter Talons to the program. Controlled by opperator throttle.

This commit is contained in:
Jason Cox 2016-02-01 15:16:25 -05:00
parent 6d903af729
commit d4ae350953
4 changed files with 62 additions and 5 deletions

2
.gitignore vendored
View File

@ -1 +1,3 @@
.metadata
DriveBase/.settings
DriveBase/sysProps.xml

View File

@ -12,10 +12,12 @@ class Robot : public IterativeRobot {
CANTalon r2_drive;
CANTalon l1_drive;
CANTalon l2_drive;
CANTalon shooter1;
CANTalon shooter2;
RobotDrive drivetrain1;
RobotDrive drivetrain2;
Joystick lstick;
Joystick rstick, lstick;
// update every 0.01 seconds/10 milliseconds.
// The talon only receives control packets every 10ms.
@ -27,9 +29,12 @@ public:
r2_drive(2), // interface to change the device number on the talons.
l1_drive(3),
l2_drive(4),
shooter1(10),
shooter2(11),
drivetrain1(l1_drive, r1_drive),
drivetrain2(l2_drive, r2_drive),
lstick(0)
rstick(0),
lstick(1)
{
printf("Initializing Robot...");
printf("Initializing TankDrive");
@ -49,6 +54,8 @@ public:
r2_drive.SetSafetyEnabled(false);
l1_drive.SetSafetyEnabled(false);
l2_drive.SetSafetyEnabled(false);
shooter1.SetSafetyEnabled(false);
shooter2.SetSafetyEnabled(false);
}
void TeleopInit()
@ -66,12 +73,19 @@ public:
void TeleopPeriodic()
{
printf("Teleop Periodic Start.");
float speed = lstick.GetY() * (lstick.GetThrottle());
float rot = (-1) * lstick.GetTwist();
float speed = lstick.GetY() * ((1.0 - (lstick.GetThrottle()))/2.0);
float rot = lstick.GetX();
drivetrain1.ArcadeDrive(speed, rot, false);
drivetrain2.ArcadeDrive(speed, rot, false);
printf("~Teleop Periodic End.");
float power = (1.0 - rstick.GetThrottle()) / 2.0;
shooter1.Set(power);
shooter2.Set(power);
printf("~Teleop Periodic End.");
}
/**
* Runs the motor from the output of a Joystick.

BIN
FRCUserProgram Executable file

Binary file not shown.

41
robot.cpp Normal file
View File

@ -0,0 +1,41 @@
#include "WPILib.h"
/**
* This is a demo program showing the use of the RobotDrive class.
* The SampleRobot class is the base of a robot application that will automatically call your
* Autonomous and OperatorControl methods at the right time as controlled by the switches on
* the driver station or the field controls.
*
* WARNING: While it may look like a good choice to use for your code if you're inexperienced,
* don't. Unless you know what you are doing, complex code will be much more difficult under
* this system. Use IterativeRobot or Command-Based instead if you're new.
*/
class Robot: public SampleRobot
{
RobotDrive myRobot; // robot drive system
Joystick stick; // only joystick
public:
Robot() :
myRobot(0, 1), // initialize the RobotDrive to use motor controllers on ports 0 and 1
stick(0)
{
myRobot.SetExpiration(0.1);
}
/**
* Runs the motors with arcade steering.
*/
void OperatorControl()
{
while (IsOperatorControl() && IsEnabled())
{
myRobot.ArcadeDrive(stick); // drive with arcade style (use right stick)
Wait(0.005); // wait for a motor update time
}
}
};
START_ROBOT_CLASS(Robot)