Timer mit DFPlayer Mini

Hallo, ich benötige mal wieder etwas Hilfe. Ich baue gerade an einem Timer, der ein DFPlayer mini schalten soll. Ich verwende einen Arduino Nano, ein LCD-Display und einen DFPlayer Mini.
Der Timer funktioniert mit einer LED so wie er soll. Wenn der Timer leuchtet leuchtet die LED und sie geht zur Stopzeit wieder aus. Zur Gleichen Zeit soll der DFPlayer Mini ein Song abspielen. Leider startet die MP3 für ca. 1 Sekunde und bricht ab, startet wieder und bricht ab. Das wiederholt sich bis die Ausschaltzeit erreicht ist. Erst dann läuft der Song in voller Länge. Ich war der Ansicht das ich den Spieler mit den Befehlen Play und Stop so einfach steuern könnte.
Hat jemand einen Rat wie ich das beheben kann?

Timer.ino (9.12 KB)

Dann zeig doch mal dein Schaltbild, damit wir sehen, wie du alles angeschlossen hast.

Und poste den Sketch in Code-Tags, damit den hier alle lesen können.

Verwende dazu die Schaltfläche </> oben links im Editorfenster.
Dazu den Sketch markieren und die Schaltfläche klicken, oder [ code] davor und [ / code] dahinter ohne Leerzeichen.
Oder
im IDE-Fenster rechte Maustaste und für “Forum kopieren klicken”, danach hier einfügen.

Das kannst du in deinem Startbeitrag noch nachträglich machen.

riesadiver1:
Das wiederholt sich bis die Ausschaltzeit erreicht ist. Erst dann läuft der Song in voller Länge. Ich war der Ansicht das ich den Spieler mit den Befehlen Play und Stop so einfach steuern könnte.
Hat jemand einen Rat wie ich das beheben kann?

Zuerst den Rat:
Das was Du suchst ist eine Schrittkette.
Ich hab ja nichtmal Deinen Code verstanden. Deine ganzen Zeitvergleiche sind - ich sags mal vorsichti - nicht schick...

Ich hab mir was gebastelt - ohne jegliche Garantie.
Ersetze mal loop():

void loop() {
  rtcReadTime();
  printRTCDateTime();
  setRTCTime();
  lcd.setCursor(0, 0);
  lcd.print(outputLine1);
  lcd.setCursor(0, 1);
  lcd.print(outputLine2);

  // vergleicht Startzeit Timer1 mit RTC und speichert Zustand in "TimerOn"
  if ((alarmhour  == stunde ) && (alarmmin  == minute) && (alarmsek == sekunde)) {
    TimerOn = true;
  }

  // vergleicht Stopzeit Timer1 mit RTC und speichert Zustand in "TimerOff"
  if ((alarmhourStop  == stunde) && (alarmminStop == minute) && (alarmsekStop == sekunde)) {
    TimerOff = true;
  }

  // vergleicht Startzeit und Stopzeit, Wenn Start war und Stopzeit falsch ist, dann leuchtet LED1
  // und Mp3Player startet
  if (TimerOn == true)
  {
    if (TimerOff == false)
    {
      if (!digitalRead(ledPin))
      {
        myDFPlayer.play(2);   //play Song 2
        digitalWrite (ledPin, HIGH);
      }
    }
    else
    {
      // vergleicht Startzeit und Stopzeit, Wenn Start war und Stopzeit war ist, dann  ist die LED1 aus
      // der Mp3 Player stopt
      // und der Starttimer wird auf False gesetzt
      digitalWrite (ledPin, LOW);
      myDFPlayer.stop();
      TimerOn = false;
    }
  }
}

Danke, Danke, Danke. Es funktioniert. Jetzt muss ich nur noch dahinter steigen, das mir nicht wieder so ein Fehler passiert.

riesadiver1:
Danke, Danke, Danke. Es funktioniert. Jetzt muss ich nur noch dahinter steigen, das mir nicht wieder so ein Fehler passiert.

Du kannst dahinter steigen, wenn Du DEINE Kommentare rausnimmst und Dir den Code dann ansiehst und Dir in jeder Zeile hinterschreibst, WAS DU ERWARTEST was da passiert.
Schreibe nicht hin "LED wird jetzt HIGH" - das sagt der Code aus.
Wenn Du mit dem dann so durch bist, kannst Du kommen und das anbieten...

Ich werde deinen Rat beherzigen. Ich geh alles von vorn noch mal durch. Wenn ich es dann nachvollziehen kann, stelle ich den Code vor. Danke noch mals für die Hilfe.

riesadiver1:
Ich werde deinen Rat beherzigen. Ich geh alles von vorn noch mal durch. Wenn ich es dann nachvollziehen kann, stelle ich den Code vor. Danke noch mals für die Hilfe.

Gerne.
Noch ne Bitte: editiere Deinen ersten Post - in der Subejct-Zeile einfach ein [gelöst] rein :slight_smile:

Mach ich, wenn du mir verraten kannst was die Subject-Zeile ist. Das ist hier mein zweiter Post. Und der erste bei dem es jetzt funktioniert.

Hab herausgefunden was die Subject-Zeile ist.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.