Multipurpose Button (Momentary/Push Hold)

I’m trying to make a CAN Button work as a multipurpose/function button. The expectation is that is can work as a simple Momentary (On/Off) button, but also have a dual function when you Push/Hold the button for X seconds.

I thought it could be done simply with the “Press/hold switch” by setting a Hold Time. But that doesn’t seem to work as expected. It seems to work as a momentary that “virtually” HOLDS the button for X seconds.

Per below.

image

I then attempted to use a timer and trigger from the Timer Elapsed signal, but that doesn’t automatically reset and left the switch on.

Thoughts? My first implementation is for the same button to be Pit Limiter and Starter. Pit Limiter is a momentary Latching switch and Starter is a Push/Hold momentary.

Not sure if this is the only way, but use a Function with a true delay. Long press will activate starter, and use the Starter output to reset the pit limiter state

So does “True Delay” mean the amount of time the button needs to be pressed? While False delay is the time the trigger stays active ones set?

yes exactly that in this application

Just bench tested this and it worked as planned. There’s a few other things I threw in to get all the functionality out of it. I’ve attached the PMU project file for you to look at, and I may make a video explaining the function and setup sometime this week as I think this would be interesting to other people

Starter-PitLimiter.pmu (5.8 KB)

1 Like

I never reviewed your solution, but we did sort it out in what I will admit is a NOT SO Clean way. Not on purpose, but due to how things were developed we did the following. Again, NOT CLEAN, but works.

On PMU we have a function that requires our ignition switch to be On and the button pushed and the RPM under 500, then the starter will trigger.

On the ADU (because this is communicating with MOTEC ECU) we are looking for the button and RPM over 500 to trigger the Pit Limiter.

Like I said, not CLEAN, but it works.

At some point once we have all our functions working, we’ll go through and clean things up and use one device to read signals, then transmit command via CAN to the other module.