Aiuto DFPlayer mini - numero traccia

Buongiorno a tutti.

Dunque ho voluto creare una “radiolina” con la DFPlayer mini per riprodurre delle tracce in loop (vorrei che i nostri allenamenti di softair siano contornati da rumori di sottofondo per creare un po di atmosfera).

quello che mi serve è semplicemente che il brano che scelgo con i comandi prev o next sia riprodotto in loop fino a quando non decido di cambiarlo. e fin qui ok funziona tutto le tracce sono in loop, vado avanti e indietro e gestisco il volume.

ho voluto però aggiungere un display sette seg che mi dia il numero delle tracce in riproduzione. e qui il mio problema.
se io vado avanti o indietro con le tracce prima che queste ricomincino e quindi si attivi il loop lo schermo le numera correttamente, ma se vado avanti o indietro dopo che la traccia è ricominciata e quindi si è attivato il loop, lo schermo mi da -1.

Ho allegato un pdf con 2 foto, una dove si vede che sto riproducendo la traccia n.3, e l’altra questo misterioso -1.

#include "SevSeg.h"
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"


# define ACTIVATED LOW

int buttonNext = 17;
int buttonPrevious = 16;
int buttonUp = 15;
int buttonDown = 14;
boolean isPlaying = false;



SoftwareSerial ss(3,4); // RX, TX
DFRobotDFPlayerMini mp3;
SevSeg sevseg;

void setup() {

pinMode(buttonNext, INPUT);
digitalWrite(buttonNext,HIGH);
pinMode(buttonPrevious, INPUT);
digitalWrite(buttonPrevious,HIGH);
pinMode(buttonUp, INPUT);
digitalWrite(buttonUp,HIGH);
pinMode(buttonDown, INPUT);
digitalWrite(buttonDown,HIGH);
 
  segSeg();
  ss.begin(9600);
  if(mp3.begin(ss)){
    isPlaying = true;
    
     mp3.volume(10);
       mp3.EQ(DFPLAYER_EQ_NORMAL);
         mp3.outputDevice(DFPLAYER_DEVICE_SD);
          mp3.play(1);
           delay(100);
             sevseg.setNumber(mp3.readCurrentFileNumber());
             sevseg.refreshDisplay();  
          
  }
     

}       

void loop() {

   
 sevseg.refreshDisplay();
   
 if (digitalRead(buttonNext) == ACTIVATED){
  if(isPlaying){
   playNext();
   }
  }

 if (digitalRead(buttonPrevious) == ACTIVATED){
  if(isPlaying){
   playPrev();
   } 
  }
  
 if (digitalRead(buttonUp) == ACTIVATED){
  if(isPlaying){
   volumeUp();
   }
  }
 
 if (digitalRead(buttonDown) == ACTIVATED){
  if(isPlaying){
   volumeDown();
   }
  }
}

void playNext(){
  mp3.next();
  delay(100);
  sevseg.setNumber(mp3.readCurrentFileNumber());
  delay(300);
  mp3.enableLoop();
  

}

void playPrev(){
  mp3.previous();
  delay(100);
  sevseg.setNumber(mp3.readCurrentFileNumber());
  delay(100);
  mp3.enableLoop();
}

void volumeUp(){
  mp3.volumeUp();
  delay(100);
}

void volumeDown(){
  mp3.volumeDown();
  delay(100);
}



void segSeg(){
  
  byte numDigits = 2;                         
  byte digitPins[] = {5, 2};               
  byte segmentPins[] = {6,7,8,9,10,11,12};      
  bool resistorsOnSegments = false;             
  byte hardwareConfig = COMMON_CATHODE;          
  bool updateWithDelays = true;               
  bool leadingZeros = true;                   

  sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments, updateWithDelays, leadingZeros);
   sevseg.setBrightness(50);
}

foto.pdf (201 KB)