DFPlayer_ mini MP3

Hallo,

ich habe einen Sketch zum Abspielen von MP3-Dateien gefunden, der in meinem Projekt sehr gut zu verwenden ist. Nur gibt es ein Problemchen. Die MP3-Datei hat eine Laufzeit von 20 Sekunden. Es wird aber nur eine Laufzeit von 6 Sekunden benötigt. Ich könnte zwar die MP3-Datei auf diese Zeit einkürzen, aber dadurch wird alles recht unflexibel.


[code]
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;

void setup()
{
  mySoftwareSerial.begin(9600);
  myDFPlayer.volume(30);  //Lautstärke auf Maximum (30)
}

void loop()
{
  myDFPlayer.play(1);  //Spielt die erste MP3-Datei ab
  delay(3000); // Nach dem Abspielen der Datei pausiert der Sketch für drei Sekunden.
}
[/code]

Was ich benötige, ist ein Code zum Stoppen des Abspielens. In der Library „DFRobotDFPlayerMini“ habe ich dazu nichts gefunden, was aber auch meinen nicht sehr tiefgreifenden Kenntnissen der Arduino-Programmierung geschuldet ist.

Kann mir jemand helfen?

Versuche dies

...

void setup() {
  mySoftwareSerial.begin(9600);
  myDFPlayer.volume(30);    // Lautstärke auf Maximum (30)
  myDFPlayer.play(1);       // Spielt die erste MP3-Datei ab
  delay(6000);              // Die Skizze pausiert für 6 Sekunden, aber die Musik läuft noch.
  myDFPlayer.stop();        // halt
}

void loop() {}
2 Likes

Das stimmt mit Deiner Vorgabe nicht überein:

Ansatz:


#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;

unsigned long lastPlayStart;
void setup()
{
  mySoftwareSerial.begin(9600);
  myDFPlayer.volume(30);  //Lautstärke auf Maximum (30)
  lastPlayStart = millis();
}

void loop()
{
  if (millis() - lastPlayStart < 6000)
  {
    myDFPlayer.play(1);  //Spielt die erste MP3-Datei ab
  }
  else
  {
    myDFPlayer.pause();
  }
  if (millis()-lastPlayStart>9000)
  {
    lastPlayStart=0;
  }
}

ungetestet aber kompiliert Fehler- und Warnungsfrei.

Siehe #2 #5

void loop()
{
  if (millis() - lastPlayStart < 6000)
  {
    myDFPlayer.play(1);  //Spielt die erste MP3-Datei ab
  }
  else
  {
    myDFPlayer.stop();
  }
  if (millis()-lastPlayStart>9000)
  {
    lastPlayStart=0;
  }
}
1 Like

Hallo,
Du könntest die Doku zur Lib lesen um herauszufinden wie Du stoppst oder auf die nächste MP3 umschaltest.

Heinz

1 Like

Ach schick! - stimmt, die gibt es ja auch...

1 Like

Guten Abend,
vielen Dank für die Unterstützung. Heute kann ich die Vorschläge jedoch nicht mehr testen. Ich bin sicher, dass die Codes funktionieren werden.
Alles Gute.

Das würde ich von mir nicht behaupten :wink: - Sag Bescheid, was draus geworden ist (oder nicht).

1 Like

Hallo miteinander,
ich danke nochmals für die Unterstützung zu meinem MP3-Playerproblem.
my_xy_projekt bat mich um eine Rückmeldung.

Folgendes Ergebnis: beide Sketche sind funktionsfähig, wenn der Code myDFPlayer.begin(mySoftwareSerial); nach mySoftwareSerial.begin(9600); eingefügt wird.

J-M-L gab mir den Tip mit: myDFPlayer.stop(); // halt
Funktioniert in meinem Projekt am Besten, da ich schon diesen Ansatz verwendet habe.

Auch Rentner sei Dank. Nachdem ich die LIB nochmals durchgelesen hatte, fand ich den gesuchten Befehl. Wie war das mit dem Wald und den Bäumen?

Volkmar