Lo que debes aprender es a trabajar sin delay() o cosas como enviarle comandos y que responda en función de eso se comportarán tan mal como en el caso que has publicado. En tu caso, cualquier número menor a 5 hace que el LED rojo parpadee cada 500 mseg pero mientras no hace nada.
En cambio si usas millis() el sistema responderá.
Ve a documentación y mira como usar millis() y no morir en el intento o cualquiera de los demas tutoriales de millis() que alli se listan, hay 4 mas.