No comprendo que quieres hacer.
Presionas y hace una secuencia, sueltas y hace otra secuencia y nada mas?
Explicaré tu primer código y de ahi resuelves tu problema, desde ya te digo que el problema es delay()
Cuando presionas por primera vez, el pulsador se pone en HIGH
Ejecuta lo que tiene dentro
digitalWrite(led, LOW);
delay(500);
digitalWrite(led, HIGH);
delay(500);
digitalWrite(led, LOW);
delay(500);
Dime cuando demora en hacerlo, pues 1.5 segundos o 1500 mseg.
Durante ese tiempo tu ya soltaste el botón, de modo que si quieres que el sistema responda no puedes hacerlo como lo estas encarando ahora sino usando una variable y no puedes usar delay() porque tienes que leer el estado del pulsador todo el tiempo.
Solución usar millis() y una máquina de estados.
Ve a Documentación, luego Indice de temas tutoriales y dentro millis() y máquiina de estados.
Esta variante con un retardo de 100 mseg puede funcionar.
int entrada = 6;
int led = 13;
int entero;
bool estadoPulsador;
void setup() {
Serial.begin(9600);
pinMode(entrada,INPUT_PULLUP);
pinMode(led, OUTPUT);
}
void loop() {
Serial.println(entero);
estadoPulsador = digitalRead(entrada);
if ( estadoPulsador == HIGH){
if (entero == 1){
digitalWrite(led, LOW);
delay2(500);
digitalWrite(led, HIGH);
delay2(500);
digitalWrite(led, LOW);
delay2(500);
entero = 2;
}
}
if (estadoPulsador == LOW){
if (entero == 2){
digitalWrite(led, LOW);
delay2(500);
digitalWrite(led, HIGH);
delay2(500);
digitalWrite(led, LOW);
delay2(500);
entero = 1;
}
}
}
void delay2(int time){
for (int i; i< time/100; i++) {
estadoPulsador = digitalRead(entrada);
delay(100);
}
}