Help needed with toggling led and debounce pushbutton

I just found a foolproof debounce technology, but it comes at a small price. I set up a 555 timer in one-shot mode, and use the pushbutton to trigger the timer. As soon as the timer output is detected on the designated Arduino input pin, I have the arduino pull the 555 reset line low, killing off the high input.

If you're going to do it in hardware, I think it's simpler to just use an RxC time constant followed by a Schmitt-trigger inverter like the 74HC14. Then you don't need an additional microcontroller pin to reset the 555 either.

I had a debounce problem where an interrupt could actually interrupt the debounce, causing unpredictable outcomes. The 555 solved the problem.

I never use software delay loops to time a debounce, as the computer can't do anything else during the delay (and interrupts can lengthen the delay period), but instead use a constant stream of interrupts from an onboard timer to increment a set of two or three bytes, and they become the time reference that you can check anytime, and will be correct regardless of other interrupts and anything else you're doing.