Button speed

When you've fixed the code as Mike suggests, you'll also need to debounce the button. Adding a delay(5) call in the loop may be sufficient.