Cancelar Voice Loop Sensor Pir y Reproducción de Audio

Hola a todos denuevo, tengo una consulta para hacerles, tengo un sensor de movimiento conectado a un arduino que lo que hace es encender un led cuando detecta movimiento y reproducir un archivo mp3
el problema que tengo es que solo quiero reproducirlo una sola vez cuando detecta movimiento el sensor y el voice loop me lo reproduce hasta que el temporizador del sensor se apaga, por lo menos 3 veces el audio, como puedo hacer para que solo suene una vez cuando detecte movimiento y luego siga funcionando?

este es el codigo, probe con varios comandos pero lo para y el sensor / led queda inutilizables

Gracias!

#define led 22
#include <SFEMP3Shield.h>
SFEMP3Shield MP3player;
SdFat sd;
byte result;
const int PIRPin= 3;

void setup(){

  sd.begin(SD_SEL, SPI_HALF_SPEED);
  MP3player.begin();

  pinMode(led, OUTPUT);
  pinMode(PIRPin, INPUT);
}

void loop(){
int value= digitalRead(PIRPin);   
   if (value == HIGH)
  {
    digitalWrite(led, HIGH);
    MP3player.playTrack(001);
    delay (2000);
     }
  else
  {
    digitalWrite(led, LOW);
  } 
}

no te lo reproduce o no compila??

pones MP3player.playTrack(001),

y sería MP3player.playTrack(001);

antes del playTrack te recomiendo que hagas un Stop no se por que pero ha funcionado en otros casos

Basta con que todo se haga solo cuando se detecte movimiento, y detener el flujo del programa hasta que dicho pin vuelva al estado bajo. Así:

void loop(){ 
   if (digitalRead(PIRPin) == HIGH)
  {
    digitalWrite(led, HIGH);
    MP3player.playTrack(001);
    while (digitalRead(PIRPin)); // Espera hasta que resulte en estado bajo.
    // Parar reprodcción
    digitalWrite(led, LOW);
   }
}

lucario448 eres un genio! muchas gracias era lo que buscaba, te super agradezco