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?
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
@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.