UNO met MP3shield v1053

Na weer een paar avonden zitten hobbien, ben ik weer een stuk wijzer.
Ik krijg nu geluid uit mijn koptelefoon dus hardware matig lijkt het goed te zijn.
Nu probeer ik het wat uit te breiden maar dan loopt mijn programma vast.

Wat heb ik gedaan :
Ik heb een aantal track0xx.mp3 op een sd kaart gezet.
Deze kan ik afspelen in mijn testomgeving.
"copy /past" ik het programma in mijn project dan wordt het angstvallig stil uit de koptelefoon en loopt het programma vast.

Nu heb ik wederom een paar vragen :

  1. wat doet SFEMP3Shield MP3player; precies?

  2. MP3player.begin(); klopt dat hiermee alles eenmalig "gereset" wordt?

  3. tot deze regel Serial.println(d); // first decimale just a check if it is the right decimale loopt het programma goed. Daarna gebeurt er niets meer.
    Kunnen jullie me vertellen wat ik fout doe?

  4. als ik :
    MP3player.playTrack(s); // speak the seconds.
    delay (2000);
    MP3player.playTrack(d); // speak the first decimale.
    delay (2000);

weg slash en onderste regel actief maakt gebeurt er ook niets.

//MP3player.playTrack(5);
Ik denk dat het dus daar niet aanligt.
Compileren gaat verder zonder fouten.

Ik hoop dat jullie me wederom uit de brand kunnen helpen.

#include <Wire.h>  // Comes with Arduino IDE
#include <LiquidCrystal_I2C.h>
// analoog A4 aan SDA(oranje),  A5 aan SCL(geel).

#include <SPI.h>
#include <SdFat.h>
#include <SFEMP3Shield.h>
SdFat sd;
SFEMP3Shield MP3player; 

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); 
int pushbutton = 7;
int ledpin=13; // led op pin 13 voor ready to run
int val=0;
int X=0;
int start=0;
int lap1=0;
int lap2=0;
int lap3=0;
int einde=0;
int buttonState;
int s;  // seconds
int d; // first decimale
float lap1a;
float lap2a;
float lap3a;
float eindea;

void setup() {
  // put your setup code here, to run once:
//start the shield
sd.begin(SD_SEL, SPI_HALF_SPEED);
MP3player.begin();  // question 2
Serial.begin(9600);
pinMode (ledpin,OUTPUT); 
pinMode(pushbutton, INPUT);
//voor data naar de pc sturen
Serial.println("CLEARDATA"); //clears any data left from previous projects
Serial.print("DATA,TIME,lap1,lap2,lap3,eind tijd"); //writes the time in the first column A and the time since the measurements started in column 
Serial.println(",");

// screen clear
lcd.begin(20,4); 
lcd.clear();
}

void loop()
{
// put your main code here, to run repeatedly:
lcd.clear();
lcd.setCursor(0,0);
digitalWrite(ledpin, HIGH);
lcd.print("klaar  ");
lcd.setCursor(5,1);
lcd.print("next run");
lcd.setCursor(0,3);
lcd.print("to A");
int X=1;
delay(500);
while (digitalRead(pushbutton) == LOW) {
   }
delay(500);
digitalWrite(ledpin, LOW);
lcd.clear();
lcd.print("   behind A");

// stopwatch    
while(X < 6)
  {
  buttonState = digitalRead(pushbutton);
  if (buttonState == 1){
    lcd.clear();
    lcd.print("  begonnen");
    if (X == 5){
      einde=millis();
      X++;   
      lcd.clear();
      lcd.print("    Einde");
      delay (2000);
    }
    if (X == 4){
      lap3=millis();
      X++;   
      lcd.clear();
      lcd.print("    to A");
      delay (500);
    }
    if (X == 3){
      lap2=millis();
      X++;   
      lcd.clear();
      lcd.print("    to B");
      delay (500);
    }
    if (X == 2){
      lap1=millis();
      X++;   
      lcd.clear();
      lcd.print("    to A");
      delay (500);
    }
    if (X == 1){
      start=millis();
      X++;
      lcd.clear();
      lcd.print("   start");
      lcd.setCursor(3,2);
      lcd.print("    to");
      delay (500);
    }
  }
  }
lap1a=(lap1-start); lap2a=(lap2-start); lap3a=(lap3-start); eindea=(einde-start);


// screen
lcd.print("tot time : ");
lcd.print (eindea/1000);
lcd.setCursor(17,3);
lcd.print ("sec");
 
// voor data opslag naar PC met PLX prog
Serial.print("DATA,TIME");
Serial.print(",");
Serial.print(lap1a/1000);
Serial.print(",");
Serial.print(lap2a/1000);
Serial.print(",");
Serial.print(lap3a/1000);
Serial.print(",");
Serial.print(eindea/1000);
Serial.print(",");
Serial.println(""); 
delay(500);

// speech part
s=eindea/1000;
d=(eindea/100-(10*s));
Serial.println(s);  // time in seconds  just a check if i have the right digit
Serial.println(d);  // first decimale  just a check if it is the right decimale
MP3player.playTrack(s); // speak the seconds.  question 3
delay (2000);
MP3player.playTrack(d);  // speak the first decimale.
delay (2000);

//MP3player.playTrack(5); 

delay (1000);
Serial.println("mp3 played"); // just a check if it the mp3 was played
delay(500);        // delay in between reads for stability


while (digitalRead(pushbutton) == LOW) {
   }
delay(10);
  }