Log in

View Full Version : More Solenoid Trouble


simon1636
06-02-2016, 19:48
Hey guys! I am having trouble coding the solenoid. I want it to be so that whenever I push on the buttons on the top of the Attack 3 joystick, the solenoid opens up. The button labeled 3 on the Attack three opens the solenoid forward and the button 2 opens the solenoid backwards. However, my code does neither of this. In fact, I'm not sure if it's the code or not, but the air only come out of hole 2 of the solenoid. If you see anything that would be affecting the situation so that it doesn't work, let me know!:D :D

/*----------------------------------------------------------------------------*/
/* Copyright (c) FIRST 2008. All Rights Reserved. */
/* Open Source Software - may be modified and shared by FRC teams. The code */
/* must be accompanied by the FIRST BSD license file in the root directory of */
/* the project. */
/*----------------------------------------------------------------------------*/

package edu.wpi.first.wpilibj.templates;



import edu.wpi.first.wpilibj.DoubleSolenoid;
import edu.wpi.first.wpilibj.Jaguar;
import edu.wpi.first.wpilibj.Joystick;
import edu.wpi.first.wpilibj.SimpleRobot;

/**
* The VM is configured to automatically run this class, and to call the
* functions corresponding to each mode, as described in the SimpleRobot
* documentation. If you change the name of this class or the package after
* creating this project, you must also update the manifest file in the resource
* directory.
*/
public class RobotTemplate extends SimpleRobot {
/**
* This function is called once each time the robot enters autonomous mode.
*/

Jaguar lTalon,rTalon;
Joystick throttle;

DoubleSolenoid exampleDouble;
Joystick aimer;


public void autonomous() {

}

/**
* This function is called once each time the robot enters operator control.
*/

public void robotInit(){
lTalon=new Jaguar(3);
rTalon=new Jaguar(4);
throttle=new Joystick(1);

exampleDouble=new DoubleSolenoid(1,2);
}
public void operatorControl() {

while(isOperatorControl() &&isEnabled()){
lTalon.set(-throttle.getZ());
rTalon.set(throttle.getZ());
}

if(aimer.getRawButton(3)){
exampleDouble.set(DoubleSolenoid.Value.kForward);
}

else if(aimer.getRawButton(2)){
exampleDouble.set(DoubleSolenoid.Value.kReverse);
}

else{
exampleDouble.set(DoubleSolenoid.Value.kOff);
}
}


}









/**
* This function is called once each time the robot enters test mode.
*/

orangelight
06-02-2016, 20:17
All the code that should run during teleop should be placed in the while loop.

simon1636
07-02-2016, 17:07
So I changed it so that all the Solenoid code is in the while loop, but it still isn't working! Do any of you guys see anything else wrong with the code?

/*----------------------------------------------------------------------------*/
/* Copyright (c) FIRST 2008. All Rights Reserved. */
/* Open Source Software - may be modified and shared by FRC teams. The code */
/* must be accompanied by the FIRST BSD license file in the root directory of */
/* the project. */
/*----------------------------------------------------------------------------*/

package edu.wpi.first.wpilibj.templates;



import edu.wpi.first.wpilibj.DoubleSolenoid;
import edu.wpi.first.wpilibj.Jaguar;
import edu.wpi.first.wpilibj.Joystick;
import edu.wpi.first.wpilibj.SimpleRobot;

/**
* The VM is configured to automatically run this class, and to call the
* functions corresponding to each mode, as described in the SimpleRobot
* documentation. If you change the name of this class or the package after
* creating this project, you must also update the manifest file in the resource
* directory.
*/
public class RobotTemplate extends SimpleRobot {
/**
* This function is called once each time the robot enters autonomous mode.
*/

Jaguar lTalon,rTalon;
Joystick throttle;

DoubleSolenoid exampleDouble;
Joystick aimer;


public void autonomous() {

}

/**
* This function is called once each time the robot enters operator control.
*/

public void robotInit(){
lTalon=new Jaguar(3);
rTalon=new Jaguar(4);
throttle=new Joystick(1);

exampleDouble=new DoubleSolenoid(1,2);
}
public void operatorControl() {

while(isOperatorControl() &&isEnabled()){
lTalon.set(-throttle.getZ());
rTalon.set(throttle.getZ());


if(aimer.getY()>0){
exampleDouble.set(DoubleSolenoid.Value.kForward);
}

else if(aimer.getY()<0){
exampleDouble.set(DoubleSolenoid.Value.kReverse);
}

else{
exampleDouble.set(DoubleSolenoid.Value.kOff);
}
}
}


}









/**
* This function is called once each time the robot enters test mode.
*/