we have one spike on our robot this year to control a claw, but it will only go in reverse, I am stumped as to why it is doing this…
Code:
#include “WPILib.h”
/**
- This is a demo program showing the use of the RobotBase class.
- The SimpleRobot 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.
*/
class RobotDemo : public SimpleRobot
{
RobotDrive myRobot;
Joystick stick;// robot drive system
Joystick stick2;
Joystick stick3;
Victor joint1;
Victor joint2;
Victor joint3;
Relay Claw;
public:
RobotDemo(void):
myRobot(1, 2, 3, 9),
stick(1),
stick2(2),
stick3(3),
joint1(6),
joint2(7),
joint3(8),
Claw(1)
{
myRobot.SetExpiration(0.1);
}
/**
* Drive left & right motors for 2 seconds then stop
*/
void Autonomous(void)
{
myRobot.SetSafetyEnabled(false);
myRobot.Drive(0.25, 0.0); // drive forwards half speed
Wait(1.0); // for 2 seconds
myRobot.Drive(0.0, 0.0); // stop robot
}
/**
* Runs the motors with arcade steering.
*/
void OperatorControl(void)
{
myRobot.SetSafetyEnabled(true);
while (IsOperatorControl())
{
myRobot.MecanumDrive_Polar(stick.GetMagnitude(), stick.GetDirectionDegrees(), stick.GetZ()); // drive with arcade style (use right stick)
Wait(0.005); // wait for a motor update time
joint1.Set(stick2.GetY());
joint2.Set(stick2.GetX());
joint3.Set(stick3.GetY());
if (stick2.GetTrigger())
Claw.Set(Relay::kForward);
if (stick3.GetTrigger())
Claw.Set(Relay::kReverse);
else
Claw.Set(Relay::kOff);
}
}
};
START_ROBOT_CLASS(RobotDemo);