Compressor Programming in LabView

We need help programming our compressor to be able to launch things. We want it to be able press a button, make the piston shoot forward, and then release the button and the piston retracts.

If any one can help us we would be quite happy! Please and Thank You!

Sorry I have never used LabView.

We did something really similar in java. Here is our code

package org.usfirst.frc.team3647.subsystems;

import edu.wpi.first.wpilibj.Talon;
import edu.wpi.first.wpilibj.Timer;
//import edu.wpi.first.wpilibj.Compressor;
import edu.wpi.first.wpilibj.Solenoid;

import org.usfirst.frc.team3647.robot.*;

public class Piston {
	public static Talon rShooter = new Talon(1);

	public static void BallShooterPiston(){
		

		Solenoid pistonOut = new Solenoid(7); // creates a Solenoid object in
												// slot 7, channel 4.

		Solenoid pistonIn = new Solenoid(0);

		if (LogitechJoystick.leftBumper) // this shoots the ball out

		{
			Robot.shootTest1 = true;
			if (Robot.shootTest1 = !Robot.shootTest) {
				rShooter.set(-1);
				// lShooter.set(1);

				Timer.delay(2);

				pistonOut.set(true); // Pushes the piston out
				pistonIn.set(false);

				Timer.delay(2);

				pistonIn.set(true); // Pulls the piston in
				pistonOut.set(false);
				Robot.shootTest = true;
				rShooter.set(0);

			}

		}
		
		if (LogitechJoystick.rightBumper2) // this shoots the ball out

		{
			Robot.shootTest1 = true;
			if (Robot.shootTest1 = !Robot.shootTest) {
				rShooter.set(-0.5);
				// lShooter.set(1);

				Timer.delay(2);

				pistonOut.set(true); // Pushes the piston out
				pistonIn.set(false);

				Timer.delay(2);

				pistonIn.set(true); // Pulls the piston in
				pistonOut.set(false);
				Robot.shootTest = true;
				rShooter.set(0);

			}

		}
		
		if(LogitechJoystick.rightBumper){
			
			rShooter.set(.25);
		}

		else {
			rShooter.set(0);
			Robot.shootTest1 = false;
			Robot.shootTest = false;
			// lShooter.set(0);
		}

	}
}

Just Drag and drop these code sniplets into your Begin and telop vis and remember to close the reference in the Finish vi. Also make sure that the correct solenoid channel is used and that the shooting solenoid is on the right button.

Are these Single Solenoids or Double Solenoids?

6056 Solenoid Begin.png
6056 Solenoid Telop.png
6056 Solenoid Finish.png


6056 Solenoid Begin.png
6056 Solenoid Telop.png
6056 Solenoid Finish.png

And I quote from my teacher “It is for sure a double solenoid.”

we got the PCM to enable and the compressor light was green. we also got these errors
ERROR 91 Variant To Data in WPI_SolenoidRefNum Registry Get.vi->Teleop.vi->Robot Main.viLabVIEW: The data type of the variant is not compatible with the data type wired to the type input.

ERROR -44007 FRC: The RefNum you are trying to Get does not exist in this RefNum Registry. WPI_SolenoidRefNum Registry Get.vi

ERROR -44007 FRC: The RefNum you are trying to Get does not exist in this RefNum Registry. Teleop.vi

images of the program

tele.PNG
Capture.PNG
finish.PNG


tele.PNG
Capture.PNG
finish.PNG

Alright, to solve the **-44007 **errors, make sure that your using the same refnum registry name in begin, Teleop and finish. In begin and finish you have Shooter Solenoid, but in Teleop you have Shooteer Solenoid.

To solve the 91 error, in the begin vi, set the solenoid to a double instead of a single solenoid from the drop down menu. Next, set the forward and reverse channels that the solenoid is wired to. After that, in the teleop.vi, change the On to a Forward and the Off to Reverse. I also attached a revised select function to drag and drop into the teleop.vi if you would like to do it that way.

That will fix both of those errors. Also, do you have a picture of how this solenoid is wired?

6056 Solenoid.png


6056 Solenoid.png

We got the piston working, thank you by the way for that! Next question is will the air compressor shut down automatically?
Now here is the picture you asked for earlier.





Your Welcome and thank you for the picture. Everything appears to be wired correctly, so the compressor will shut off automatically once the pressure switch reaches ~120 PSI.

It is all working, but we are still getting a refnum error. My teacher is just curious as why that would be.

A Refnum error is usually going to be a typo in a name or a reference to an old device that’s no longer being used.
Since everything works, hopefully it’ll be a name in an unimportant or redundant section of code.