Double Acting Pneumatics Block Coding Autonomous Issue

So, this is our first year using pneumatics and our second year using block coding for our autonomous. What we want to happen when we start the program is that the desired piston remains extended. We are facing an issue where when we run the code, it immediately retracts then re-extends in a split second, wasting a lot of pressure.

I’m not sure exactly what might be causing this, but here is the start of our code (I figured putting a block setting the piston to extend at the beginning of the code would ensure that it starts extended).

Another issue is that when we stop the program, regardless of the position the pistons are in (we have two), they move to the opposite position, again wasting more air before the competition. However, when I turn the robot off completely, they move back to their former position (where we want them). When I turn the robot back on, nothing happens, as expected. If anybody can help me out with this problem it would be it greatly appreciated.


At the hardware level, understand that the solenoid had two descrete positions, which pressurizes one side of the air cylinder while exhausting the other. That means, when the solenoid is “off” one side of the cylinder is still pressurized. Since you’re using double acting cylinders, then “off” doesn’t have to be the retracted position, it could also be the extended position of the air cylinder. Just switch the hoses to the air cylinder and adjust the program. This should take care of the unwanted cycle at start-up.


I’ve already tried swapping the hoses just to see what happened, and it still did the same thing, just opposite.
Then I adjusted the coding to compensate for that and somewhere along the way it messed it all up. I pretty much gave up after that and put everything back to the way it was before, and that lead me to here, asking for help.

1 Like

I suggest you pull the air cylinders (or get a couple new ones) from the 'bot, and experiment on your bench for a bit to see how things work both physically and with the controller/code, especially at startup. It’s important for pneumatic systems (small ones like VEX, and big ones like industrial equipment) to start up in a safe manner, without cylinders unexpectedly extending or retracting at the start of operation.

When your controller starts up, all the solenoids will be pulled to the “A” position, and this should be set up to pressurize the “exhaust” side of the air cylinder when it’s in the initial position (thus nothing should move at powerup). If you shut off your robot with cylinders not in their initial position, you might get the unplanned actuation of the cylinders the next time your controller starts, as it will pull all the solenoids back to their “A” position.


You see, that’s the thing. I understand the whole A B thing and how it all pressurizes. However, I’ve coded it both ways, where it stops with the piston extended and stops with it retracted. Either way it still ends up opposite when I stop the code. Like you said, I would expect it to revert to the A position regardless, but evidently that’s not true. There’s also still the issue of it cycling once as soon as the program is ran. Not sure if you might have any idea as to why this is happening, though.

I see what you are saying. You’re going to want to add a pressure release valve to your system. You’ll want to relieve the pressure on your positions and set everything as intended before you pressurize it. Since the solenoids are just digital outputs, the brain does not know where the pressure is if you are just trying to continuously run your auton.

I’m sure you could get away for the most part by setting things in driver control before going back to testing your auton, but you’ll want to have a way to relieve the pressure in the system regardless.

1 Like

I know I’m asking a bit much, but is there a pressure release system that you know of that works?

The dual action kit comes with a finger valve for this purpose.


Once you fill up the air, turn it on with the finger valve to release the pressure, and it shouldn’t automatically turn on/off when running a program or stopping a program. Am I understanding this correctly?