I am a member of team 4528, the Automatons. I need help figuring out why my pneumatics code for double solenoids won't work.
Code:
package org.usfirst.frc.team4528.robot;
import edu.wpi.first.wpilibj.Compressor; //Pneumatics
import edu.wpi.first.wpilibj.Joystick; //DriveTrain
import edu.wpi.first.wpilibj.RobotDrive; //DriveTrain
import edu.wpi.first.wpilibj.SampleRobot;
import edu.wpi.first.wpilibj.DoubleSolenoid; //Pneumatics
import edu.wpi.first.wpilibj.Timer;
import edu.wpi.first.wpilibj.Victor; //Motors
public class Robot15 extends SampleRobot
{
Victor frontLeft;
Victor rearLeft;
Victor frontRight;
Victor rearRight;
Victor pully;
RobotDrive myRobot;
XBoxJoystick gamestick;
DoubleSolenoid pistonArm;
Compressor compressor;
public void Robot()
{
frontLeft = new Victor(1); //Set to appropriate PWM port
rearLeft = new Victor(2); //Set to appropriate PWM port
frontRight = new Victor(3); //Set to appropriate PWM port
rearRight = new Victor(4); //Set to appropriate PWM port
pully = new Victor(5); //Set to appropriate PWM port
pistonArm = new DoubleSolenoid(7, 6);
compressor = new Compressor(); //Set to null
gamestick = new XBoxJoystick(0); //Set to appropriate victors
myRobot = new RobotDrive(frontLeft, rearLeft, frontRight, rearRight);
}
public void useElavator()
{
if(gamestick.getRightZ() > 0)
{
pully.set(gamestick.getRightZ()); //Sets value of trigger to speed of motor
}
else if(gamestick.getLeftZ() > 0)
{
pully.set(-gamestick.getLeftZ()); //Sets value of trigger to speed of motor
}
else
{
pully.set(0.0); //Doesn't run if trigger not pressed
}
}
public void moveArm()
{
compressor.start();
compressor.setClosedLoopControl(true); //Lets PCM handle the automatic turning on and off of compressor once pressure hits 120 psi
if(gamestick.getAButton() == true)
{
pistonArm.set(DoubleSolenoid.Value.kForward); //Pushes piston whenever 'A' button is pressed
System.out.println("'A' button is pressed: Piston moves forward");
}
else if(gamestick.getBButton() == true)
{
pistonArm.set(DoubleSolenoid.Value.kReverse); //Reverses piston whenever 'B' button is pressed
System.out.println("'B' button is pressed: Piston moves backward");
}
else
{
pistonArm.set(DoubleSolenoid.Value.kOff); //Disables piston
}
}
public void operatorControl()
{
myRobot.setSafetyEnabled(false);
while(isOperatorControl() && isEnabled())
{
//squaredInputs help to lower speed value of analog sticks at lower values
myRobot.tankDrive(gamestick.getLeftY(), gamestick.getRightY(), true);
Timer.delay(0.005);
useElavator();
Timer.delay(0.005);
moveArm();
}
}
}
We know that the problem is not with the hardware itself since we are able to use the pistons manually via the solenoid. It is most likely a problem with the code, specifically the moveArm() method.