Kein Standbytimer nach Wiederholung durch drücken der Play Taste

Hallo,

ich habe mit der Suche nichts gefunden, daher hier mal mein Problem mit dem Standbytimer.

Es geht um eine Box mit einem Arduino und der Platine von Leiterkartenpiraten mit Pololu zum Einschalten, der mit der Play-Taste verknüpft ist. Ich betreibe alles mit der aktuellen DEV Version 2.1.
Ich habe einen Shortcut für den Start festgelegt, wenn ich dieses aber durch erneutes Drücken der Play Taste wiederhole, dann wird der Timer nicht neu gesetzt und der Tonuino bleibt so lange an, bis die Batterie leer ist. Tatsächlich merke ich gerade, dass der Timer immer inaktiv bleibt, wenn man einen Track durch Drücken der Play/Pause Taste wiederholt.

Hier mal ein Auszug aus dem Monitor:

SD Karte online
Firmware Version: 0x12 = counterfeit chip
=== playShortCut()
3
== playFolder()
=== disablestandby()
1 Dateien in Ordner 1
Einzel Modus -> eine Datei aus dem Odrdner abspielen
=== disablestandby()
1
=== nextTrack()
Einzel Modus aktiv -> Strom sparen
=== setstandbyTimer()
303966
1
=== disablestandby()

Müsste ich etwas am code ändern, um das Problem zu lösen oder woran liegt es?

Herzliche Grüße

Matis

Ja, da ist ein Bug. Eigentlich sollte die Playtaste zum wiederholen gar nicht funktionieren. Das gleiche passiert auch wenn du vorwärts drückst, nachdem der Titel gespielt wurde. Ich hab irgendwo eine Softwareversion, wo ich das angepasst hab. Ich schau mal, ob ich die wiederfinde

Das klingt super. Wenn Du die noch mal findest, wäre mir sehr geholfen. Danke!

Moin!
Was @Gute_Laune meint ist, glaube ich, das hier:

@kobayashi_maru Danke. Hab es mal versucht und es so wie ich es verstanden habe eingetragen. Man kann nun nicht mehr mit Play den Track wiederholen, aber auch nicht mehr aus Pause heraus wieder starten und komischerweise auch nur einen Track vorwärts und danach nicht mehr.
Hier der Auszug, wie ich den Code geändert habe:

static void nextTrack(uint16_t track) {
  Serial.println(track);
  if (activeModifier != NULL)
    if (activeModifier->handleNext() == true)
      return;

  if (track == _lastTrackFinished) {
    return;
  }
  _lastTrackFinished = track;

  if (knownCard == false)
    // Wenn eine neue Karte angelernt wird soll das Ende eines Tracks nicht
    // verarbeitet werden
    return;

  Serial.println(F("=== nextTrack()"));

  if (myFolder->mode == 1 || myFolder->mode == 7) {
    Serial.println(F("Hörspielmodus ist aktiv -> keinen neuen Track spielen"));
    setstandbyTimer();
    knownCard = false;
    //    mp3.sleep(); // Je nach Modul kommt es nicht mehr zurück aus dem Sleep!
  }
  if (myFolder->mode == 2 || myFolder->mode == 8) {
    if (currentTrack != numTracksInFolder) {
      currentTrack = currentTrack + 1;
      mp3.playFolderTrack(myFolder->folder, currentTrack);
      Serial.print(F("Albummodus ist aktiv -> nächster Track: "));
      Serial.print(currentTrack);
    } else
      //      mp3.sleep();   // Je nach Modul kommt es nicht mehr zurück aus dem Sleep!
      setstandbyTimer();
      knownCard = false;
    { }
  }
  if (myFolder->mode == 3 || myFolder->mode == 9) {
    if (currentTrack != numTracksInFolder - firstTrack + 1) {
      Serial.print(F("Party -> weiter in der Queue "));
      currentTrack++;
    } else {
      Serial.println(F("Ende der Queue -> beginne von vorne"));
      currentTrack = 1;
      //// Wenn am Ende der Queue neu gemischt werden soll bitte die Zeilen wieder aktivieren
      //     Serial.println(F("Ende der Queue -> mische neu"));
      //     shuffleQueue();
    }
    Serial.println(queue[currentTrack - 1]);
    mp3.playFolderTrack(myFolder->folder, queue[currentTrack - 1]);
  }

  if (myFolder->mode == 4) {
    Serial.println(F("Einzel Modus aktiv -> Strom sparen"));
    //    mp3.sleep();      // Je nach Modul kommt es nicht mehr zurück aus dem Sleep!
    setstandbyTimer();
    knownCard = false;
  }
  if (myFolder->mode == 5) {
    if (currentTrack != numTracksInFolder) {
      currentTrack = currentTrack + 1;
      Serial.print(F("Hörbuch Modus ist aktiv -> nächster Track und "
                     "Fortschritt speichern"));
      Serial.println(currentTrack);
      mp3.playFolderTrack(myFolder->folder, currentTrack);
      // Fortschritt im EEPROM abspeichern
      EEPROM.update(myFolder->folder, currentTrack);
    } else {
      //      mp3.sleep();  // Je nach Modul kommt es nicht mehr zurück aus dem Sleep!
      // Fortschritt zurück setzen
      EEPROM.update(myFolder->folder, 1);
      setstandbyTimer();
      knownCard = false;
    }
  }
  delay(500);

Entschuldigt, wenn ich mich damit zu blöd angestellt habe, aber ich hab kaum Ahnung von Programmierung.

Testest du mit dem Album-Modus?

Die Klammern hier am Ende passen nicht, wenn da eine Zeile steht funktioniert das noch, aber mit mehreren nicht. Es muss so aussehen

-} else
+} else {
      //      mp3.sleep();   // Je nach Modul kommt es nicht mehr zurück aus dem Sleep!
      setstandbyTimer();
      knownCard = false;
-    { }
+   }
}
1 „Gefällt mir“

Ja genau es war der Album-Modus. Mit der letzten kleinen Änderung im Code hat es geklappt. Danke noch mal.

1 „Gefällt mir“