Bueno con ese pedazo de código que pusiste está un poco complicado saber para que es " if(antirebote(PULFORM))"
ademas que hacen esos delay y la variable "K". Entonces dejando de lado todo eso, creo que tu problema esta en la forma en que detectas cuando el boton se presiona y cuando se suelta.
prueba lo siguiente:
//////////////MICROFONO ALTOPARLANTE/////////////////
estadoBoton = digitalRead(PULFORM);
if(estadoBoton && !estadoBotonAnterior) { //Me imagino que aqui es cuando presionas el boton
analogWrite(LedForm,0);
myDFPlayer.play(18);
delay(2000); //Me gustaria saber para que es éste delay
digitalWrite (AUDIOPOT, HIGH); // Habilita señal de audio a potencias
K = true;
}
if (!estadoBoton && estadoBotonAnterior){ // y aqui cuando lo sueltas
Serial.println("NO PULSADO");
myDFPlayer.play(19);
delay(2000);
digitalWrite (AUDIOPOT, LOW); // Habilita señal de audio a potencias
}
estadoBotonAnterior=estadoBoton;
Si esa variable antirrebote es para evitar el rebote del botón(obvio no?), entonces no la necesitas porque con ese delay de 2 segundos te aseguro que no tendrás ningún rebote