My team does type of action for our dual acting solenoid.
Code:
bool isReady;
bool Piston;
isReady = true;
Piston = false;
if (DriverJoyStick.GetTrigger() && isReady && !Piston){
Piston = true;
isReady = false;
} else if (DriverJoyStick.GetTrigger() && isReady && Piston {
Piston = false;
isReady = false;
} else if (!DriverJoyStick.GetTrigger()){
isReady = true;
}
Where when you press the DriverJoystick Trigger and release it, it toggles the Boolean HalfSpeed. The Boolean you can set later in your code. We use it such as.
Code:
if(Piston){
piston.Set(Relay::kForward);
} else if (!Piston){
piston.Set(Relay::kReverse);
}