Dudas con mantener una función sin pausar el loop

no se si te he pillado, pero después de llevar tiempo peleado con millis() he llegado a la conclusión que cuantas menos instrucciones entre lecturas mejor

 if (acumulado > 2500) {  // Si el valor de contactos seguidos es mayor que 2500 (así evito falsos positivos)...
    ahora = millis();      // a la variable ahora le asigno el valor de millis
    gap = ahora + 5000;    // y a la variable gap el valor de ahora + 5000 ms
    Serial.println("Contacto"); // en la aplicación real no será necesario el puerto de serie

    digitalWrite(rele, HIGH);  //<----- cambia aquí el HIGH

  }

  if (millis() < gap)  {   // Esta es la función que uso para soplar durante 5 segundos
    diff = gap - millis();
 //   digitalWrite(rele, HIGH);  

//dejamos esto para ver en pantalla
    Serial.print("Soplamos (Queda por soplar ");
    Serial.print(diff);
    Serial.println(" ms)");
  }
  else
  {
    digitalWrite(rele, LOW);  // Esta parte del código necesitaré mejorarla para que no la ejecute cuando el pin ya esté en LOW,
                              // Pero es que actualmente ni así funciona :(
  }
// aunque yo anulaba todo el resto (desde if millis()) y pondría
if(millis()>gap && gap){
     digitalWrite(rele, LOW);
     gap=0;
     }

Saludos