The project that I have in mind is yet another 7-segment count down timer. The only programming experience that I have is from writing mildly complicated bash scripts, so software my weak point.
I want a single button to set/start the timer (long press to enter setup, short presses to increase time, long press to start countdown). I've been tinkering with each part individually, and I'm confident that I can figure that stuff out. Right now, my long/short press detection relies on delay(), so my next step is to adapt BlinkWithoutDelay to my project.
The part that I'm concerned about is that while the timer is counting down, I want to stop the count by holding down a button for 30 seconds. My first thought was to use my long/short press detection on an interrupt pin, but I have since learned that neither delay() nor millis() work inside an interrupt routine.
So my tentative solution is to tune an RC circuit to the 30 seconds and use it on the base of a transistor. Then, I can just initiate the interrupt on either RISING or FALLING. Going the RC route will work, but increases my part count. Can I do what I want in software, or is the RC circuit best?
Once you have your code changed to use millis() instead of delay() to detect long and short presses it should be trivial to have it detect very-long(30 second) presses. No need for interrupts once you get rid of delay().