We are using 12volt solenoids hooked up through the solenod break out. Everything in the code so far works besides the solenoids. The lights on the module don’t light up either. The solenoids work and the pistons fire when the buttons are pressed manually.
#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 MyCode : public SimpleRobot
{
RobotDrive *myRobot; // robot drive system pointer
Joystick *stick; // arcade drive joystick pointer
DriverStation *ds; // driver station object
Solenoid *s1;
Solenoid *s2;
Solenoid *s3;
Solenoid *s4;
Solenoid *s5;
Solenoid *s6;
Compressor *c;
bool btn1state;
bool btn2state;
bool btn6state;
bool btn7state;
bool quickReleaseState;
bool resetPistonState;public:
/**
*
*
Constructor for this robot subclass.
Create an instance of a RobotDrive with left and right motors plugged into PWM
ports 1 and 2 on the first digital module.
*/
MyCode(void)
{
ds = DriverStation::GetInstance();
myRobot = new RobotDrive(1, 2); // create robot drive base
stick = new Joystick(1); // create the joystick
s1 = new Solenoid(1); // allocate the Solenoid objects
s2 = new Solenoid(1);
s3 = new Solenoid(1);
s4 = new Solenoid(1);
s5 = new Solenoid(1);
s6 = new Solenoid(1);
c = new Compressor(1,1);
c->Start();GetWatchdog().SetExpiration(5.0);
//AxisCamera &myCamera = AxisCamera::getInstance();}
/**
Drive left & right motors for 2 seconds, enabled by a jumper (jumper
must be in for autonomous to operate).
*/
void Autonomous(void)
{
GetWatchdog().SetEnabled(false);for (int j = 0; j<3; j++) {// myRobot->Drive(0.5, 0.0); // drive forwards half speed
s1->Set(true); //activate quick release retract
Wait(1.0);
s1->Set(false); //for 2 seconds
s3->Set(true); //activate reset piston extend
Wait(1.0);
s3->Set(false);
s2->Set(true); //activate quick release piston extend
Wait(1.0);
s2->Set(false);
s4->Set(true); //activate reset piston retract
Wait(1.0);
s4->Set(false);
}
myRobot->Drive(0.0, 0.0); // stop robotGetWatchdog().SetEnabled(true);}
/**
Runs the motors under driver control with either tank or arcade steering selected
by a jumper in DS Digin 0. Also an arm will operate based on a joystick Y-axis.
*/
void OperatorControl(void)
{
btn1state = 0;
btn2state = 0;
btn6state = 0;
btn7state = 0;
quickReleaseState = 1; //quick release piston is extended
resetPistonState = 0; //reset pistion is retractedwhile (IsOperatorControl())
{
GetWatchdog().Feed();myRobot->ArcadeDrive(stick); // drive with arcade style if (stick->GetRawButton(1) && !btn1state) //button is pressed but not being held { btn1state = 1; //button is being pressed s1->Set(true); //activate quick release retract Wait(1.0); //for 2 seconds s1->Set(false); //reset state s1->Set(true); //activate reset piston extend Wait(1.0); s3->Set(false); //restet state s2->Set(true); //activate quick release piston extend Wait(1.0); s2->Set(false); //reset state s4->Set(true); //activate reset piston retract Wait(1.0); s4->Set(false); //reset state } else if(!stick->GetRawButton(1) && btn1state) //button is not being pressed { btn1state = 0; //reset state } if (stick->GetRawButton(6) && !btn6state) { btn6state = 1; if (quickReleaseState) { s2->Set(false); s1->Set(true); //activate quick release retract quickReleaseState = 0; //quick release piston is retracted } else { s1->Set(false); s2->Set(true); //activate quick release extend quickReleaseState = 1; //quick release piston is extended } } else if(!stick->GetRawButton(6) && btn6state) //button is not being pressed { btn6state = 0; //reset state } if (stick->GetRawButton(7) && !btn7state) { btn7state = 1; if (!resetPistonState) { s4->Set(false); s3->Set(true); //activate reset extend resetPistonState = 1; //reset piston is extended } else { s3->Set(false); s4->Set(true); //activate reset retract resetPistonState = 0; //reset piston is retracted } } else if(!stick->GetRawButton(7) && btn7state) //button is not being pressed { btn7state = 0; //reset state }}
}
};START_ROBOT_CLASS(MyCode);
What is wrong with my code? Please help me!