https://www.jeremyblum.com/2011/03/07/arduino-tutorial-10-interrupts-and-hardware-debouncing/
Tutorial 10 for Arduino: Interrupts + Debouncing