Hi, this is team 2198 and we are having trouble programming for the solenoids and compressors for java. We would appreciate any help we can receive whether it is a program or a simple guide.
Thanks for reading :o
Hi, this is team 2198 and we are having trouble programming for the solenoids and compressors for java. We would appreciate any help we can receive whether it is a program or a simple guide.
Thanks for reading :o
If someone has real sample code, jump in. In the mean time, there is some test code in edu.wpi.first.wpilibj.CompressorTest which is used to test WPILibJ on a special test rig.
Also, if you could give some details about the problems your seeing?
I am not sure howto get started :ahh:
OK, thereâs some solenoid example code in the DefaultCodeProject.
From NetBeans, select âFile/New ProjectâŚâ. In the window, open the âSamplesâ folder, select âFRC Javaâ, then âDefaultCodeProject.zipâ and continue making the project from there.
Also, as I mentioned before there is some test code in WPILibJ. To see that code, select âFile/Open ProjectâŚâ. Navigate to your âsunspotfrcsdkâ directory, then the âlibâ directory under that. From there select WPILibJ.
This should give you a good idea.
package edu.wpi.first.wpilibj.templates;
import edu.wpi.first.wpilibj.Joystick;
import edu.wpi.first.wpilibj.Compressor;
import edu.wpi.first.wpilibj.Solenoid;
public class Airsystem extends SimpleRobot {
private Joystick DriverStick;
private AxisCamera camera; //defines Axis Camera
private Solenoid s1,s2; //defines solenoids
public Airsystem() {
DriverStick = new Joystick(1); // USB port
airCompressor = new Compressor(1,1); //Digtial I/O,Relay
airCompressor.start(); // Start the air compressor
s1 = new Solenoid(1); // Solenoid port
s2 = new Solenoid(2);
public void autonomous() {
}
public void operatorControl() {
if(DriverStick.getRawButton(1) == true)
{
s1.set(true);
s2.set(false);
}
if(DriverStick.getRawButton(2) == true)
{
s1.set(false);
s2.set(true);
}
}
}
HowdyâŚ
We had to insert this piece of code in the operatorControl() as well,
// New compressor code...
if (airCompressor.getPressureSwitchValue()) {
airCompressor.setRelayValue(edu.wpi.first.wpilibj.Relay.Value.kOff);
} else {
airCompressor.setRelayValue(edu.wpi.first.wpilibj.Relay.Value.kOn);
}
And donât forget to turn the compressor off when exiting your operatorControl loopâŚ
airCompressor.setRelayValue(edu.wpi.first.wpilibj.Relay.Value.kOff);
This is not correct, call the Compressor class tell it the digital input and the spike port and it will take care for you.
ex: Compressor myComp = new Compressor(1,1); //Thatâs all you need
By default, the compressor is not enabled until you call the start() method on it. This is needed in addition to the creation of a Compressor object.
Make sure to call start() on the compressor object, and also make sure that it is a class member so it does not go out of scope. Since the example code in post #5 shows no declaration for airCompressor, my best guess is that youâre creating a new one each loop.
The example should look more like this:
....
public class Airsystem extends SimpleRobot {
private Joystick DriverStick;
private AxisCamera camera; //defines Axis Camera
private Solenoid s1,s2; //defines solenoids
**private Compressor airCompressor;**
public Airsystem() {
DriverStick = new Joystick(1); // USB port
airCompressor = new Compressor(1,1); //Digtial I/O,Relay
airCompressor.start(); // Start the air compressor
s1 = new Solenoid(1); // Solenoid port
s2 = new Solenoid(2);
}
...
Instead of deleting your post with âProblem is now solvedâ, can you please tell us in case we have the same issue? We also donât know how to program the compressor using Java.