arduino error con el tiempo

tienes que deshacerte de los delays()

delay(1000);//retraso antes de repetir el ciclo

estos te bloquean el programa por eso no leen las pulsaciones.
puedes usar interrupciones pero si tu codigo es suficientemente rapido con quitar los delays sera suficiente.
mira el ejemplo que viene con arduino de blinkwithoutdelay