You can use the [millis][1] function to check the current 'time'. If you store this, and later call this function again, by subtracting you can see how much time has been passed. so instead of `delay(500)` you use `if (millis() - timeStamp >= 500) { ...` to continue your code. As others said in comments, you also need to debounce to prevent multiple button triggers. **Edit: Debouncing** There is not a library for debouncing (at least not one on the Arduino site), but you can easily copy the needed code from the following sketch: [Arduino Debounce][2] [1]: https://www.arduino.cc/reference/en/language/functions/time/millis/ [2]: https://www.arduino.cc/en/Tutorial/Debounce