Marco's Affenbox Fork

Problem gefunden, behobennund hoch geladen.
Hoffe es läuft jetzt.
Bei weiteren Problemen, bitte wieder melden.

Ich freue mich im übrigen sehr über das Feedback.
Ich verwende aktuell nicht jede Funktion im Alltag und finde deshalb auch nicht alle Fehler selbst.

@marco-117 Hallo Marco, ich mach das sehr gerne. Wir habe ja alle was davon. Dass du so schnell auf die Probleme reagierst finde ich super :+1:

Hab die neueste Version jetzt nun geprüft. Die „weiter-Funktion“ läuft jetzt auch nachdem man die Karte entfernt und wieder aufgelegt hat. Nachdem der letzte Track im Ordner erreicht wurde und man die weiter Taste gedrückt hat wird nichts wiedergegeben (soll ja auch so sein, ist ja Ende), allerdings läuft der DFPlayer weiter, die blaue LED des DFPlayers ist an (heißt es wird was abgespielt). Man hört aber nichts. Bei Druck auf zurück Taste wird zum vorherigen Track gesprungen und die Wiedergabe läuft (blaue LED an), aber man hört nichts. Erst wenn ich die Karte entferne und wieder auflege, wird der Sound wieder aktiviert und man hört den aktuellen Track.

Hat das etwas mit der Switch Speaker Funktion zu tun, oder ist es doch was anderes?

Hier die Konsolenausgabe:

TonUINO Version 2.1
created by Thorsten Voß and licensed under GNU/GPL.
Information and contribution at https://tonuino.de.

Fork by Marco Schulz
load settings from flash
Version: 2
Max Vol: 30
Min Vole: 5
Init Vol: 15
EQ: 1
Locked: 0
Sleep Timer: 0
Inverted Vol Buttons: 0
Admin Menu locked: 0
Admin Menu Pin: 1111
Saved Modifier Mode: 0
set standby timer
milis: 0
Firmware Version: 0x12 = counterfeit chip
=== mfrc522-> RxGain_avg === 
ReadCardSerial finished
Card UID 
 F0  94  D0  59 
PICC type MIFARE 1KB
Authenticating Classic using key A...
Reading data block4...
Data on Card :  13  37  B3  47 02 02 02 00 00 00 00 00 00 00 00 00 
2
2
new card
playFolder
disable standby timer
30 tracks in folder 2
Album
play track: 1
next track: 2
next track: 3
next track: 4
next track: 5
next track: 6
next track: 7
next track: 8
next track: 9
next track: 10
next track: 11
next track: 12
next track: 13
next track: 14
next track: 15
next track: 16
next track: 17
next track: 18
next track: 19
next track: 20
next track: 21
next track: 22
next track: 23
next track: 24
next track: 25
next track: 26
next track: 27
next track: 28
next track: 29
next track: 30
set standby timer
milis: 0
set standby timer
milis: 0
previous track: 29
previous track: 28
next track: 29
next track: 30
card gone
set standby timer
milis: 0
ReadCardSerial finished
Card UID 
 F0  94  D0  59 
PICC type MIFARE 1KB
Authenticating Classic using key A...
Reading data block4...
Data on Card :  13  37  B3  47 02 02 02 00 00 00 00 00 00 00 00 00 
2
2
same card
disable standby timer

Gruß

Ich denke ich habe dein Problem gefunden, es hängt wahrscheinlich mit dem Speaker Switch zusammen.
Ich schalte den Lautsprecher im Leerlauf aus, aber nicht an allen Stellen, an denen die Wiedergabe gestartet wird, schalte ich ihn wieder ein.

Eine neue Version ist hoch geladen.

@marco-117 könntest Du mir bitte mitteilen an welchen Stellen Du ein disablestandbyTimer eingefügt hast. Ich habe meinen Lautsprecher auch nach @CaCO3 über den StandbyTimer geschaltet & ähnliche Probleme. Ich verwende aber die „normale“ DEV-Version.
Danke, Gruß Jens.

Wenn du die info gleich brauchst such doch in meinem Fork danach strg+f öffnet die Suchfunktion.

Ich glaube am Ende von nextTrack und previousTrack.

@marco-117 Danke.
Es sieht ja bei Dir ein wenig anders aus aber ich werde es an den zwei Stellen mal versuchen.
Eilig ist es nicht, aber wenn Dir noch eine Stelle einfallen sollte kannst Du es ja ergänzen.

Du musst den Standbytimer deaktivieren sobald du einen Track spielen lässt.
Das wird meines wissen Andrei Stellen gemacht.
PlayFolder()
nextTrack()
previousTrack()

Dort wird mit mp3.play… Ein Track gewählt und gespielt.
Im Original eventuell an mehreren Stellen in den Methoden.

Vor jeder dieser mp3.play… aufrufe muss das disableTimer

Eventuell ist da sogar ein Bug im Original.
Denn mit dem next oder previousTrack Button kann man glaube ich einen Track anspielen ohne das disableTimer ausgeführt wird.
Das prüf ich nochmal bevor ich da einen Fall daraus mache.

@marco-117 Danke für Deine Ergänzung & Erklärung.

@marco-117 Hallo Marco, sorry dass es so lange gedauert hat. Hab jetzt erst Zeit gefunden deine aktuellste Version zu testen. Also Fehler beseitigt :+1:

Danke dir vielmals für die Unterstützung und Hilfe bei der Fehlerbeseitigung! Jetzt steht die Software für den TonUINO. Heute werden die letzten Teile von dem Gehäuse im 3D Druck fertig :wink: (hoffentlich passen die Teile auch zusammen :stuck_out_tongue_winking_eye:)

Gruß

@marco-117 zur Info:
In Zeile 3311 hast Du aus versehen Low statt LOW geschrieben.

P.S.: Ich hab mir Deine Start & Ende Sounds ausgeliehen. Danke.

Ah Danke, pass ich an.

Klar mach das, ich hab die von freesound.org

Hallo @marco-117, der Prototyp meines TonUINOs war jetzt einige Tage im Feldtest (mein kleiner Sohn, ist ein Super-Tester :rofl:). Deine Software läuft echt super, vielen Dank nochmal an dieser Stelle für die Software und die Unterstützung bei der Fehlerbeseitigung.

Mir ist noch ein kleiner Fehler aufgefallen. Der ShutDown-Sound wurde nicht immer abgespielt. So habe ich in der Shutdown() Methode, vor dem abspielen des Sounds 265 (ShutDown), den Speaker Switch auf HIGH gestellt. Der Lautsprecher wird hier nun immer aktiviert, egal aus welchem Modus die Shutdown() Methode aufgerufen wird. Somit wird der Sound nun auch immer abgespielt.

Gruß

1 „Gefällt mir“

Danke für das Feedback und den Verbesserungsvorschlag. Das werde ich so direkt übernehmen.

@marco-117, ich suche aktuell die richtige Stelle im Code für eine Funktion zum abspielen eines Soundfiles (aus dem advert-Ordner), welches nach dem Ende des letzten Tracks abgespielt werden soll. Es soll so zusagen einen Hinweis darstellen… so nach dem Motto alle Lieder abgespielt, Ende jetzt.

Ich finde allerdings nicht die passende Stelle dafür. Hast du evtl einen Tip für mich an welcher Stelle im Code ich das versuchen soll?

Gruß

Im Grunde wäre der MP3 Ordner die richtige Wahl?
Advert ist ja so gedacht, dass ein Track damit unterbrochen und wieder fortgesetzt wird.

Genau, aus dem mp3 Ordner muss diese Ansage gespielt werden.
Advert geht nur im laufenden Titel.

Die richtige Stelle wäre in nextTrack, immer wenn erkannt wird das der letzte Track erreicht wird und die Funktion deshalb vorzeitig verlassen wird. Das sind je nach Abspielmodus andere Bedingungen.

Ok, danke euch. Dann werde ich morgen mal einen weiteren Versuch starten. Aus dem advert Ordner wurde ein Sound abgespielt, allerdings nicht am Ende des Tracks. Ich versuche das aus dem mp3 Ordner auszuführen.

Der Tip mit dem MP3 Ordner war sehr gut :+1:. Ich habe Folgendes in die nextTrack Methode eingefügt (siehe Kommentare):

static void nextTrack(uint16_t track) {
  bool queueTrack = false;

  if (activeModifier != NULL) {
    if (activeModifier->handleNext() == true) {
#ifdef DEBUG
      Serial.println(F("Next track locked"));
#endif
      return;
    }
  }

  if (track == _lastTrackFinished || knownCard == false) {
    #ifdef DEBUG
      Serial.println(F("_lastTrackFinished"));
	#endif
	return;
  }

_lastTrackFinished = track;

  switch (myFolder->mode) {
    case Album:
      if (currentTrack < numTracksInFolder)
        currentTrack = currentTrack + 1;
      else{

  mp3.playMp3FolderTrack(700);              //Abspielen eines Sounds nach Ende des letzten Tracks
  delay(1000);                              //Ist etwa die Dauer des abzuspielenden Sounds
  mp3.pause();                              //Wiedergabe soll hier stoppen!
  
        currentTrack = 0;
        setstandbyTimer();
        return;}
      break;

Also der Sound wird auch immer nach Ende des letzten Tracks abgespielt. Allerdings startet sofort nach dem Sound die Wiedergabe von Anfang an (Track eins) zu spielen. So ist das Verhalten wenn die drei Zeilen Code, die ich eingefügt habe, drin sind. Ohne meine Anpassung stoppt die Wiedergabe, wie es soll, nach dem letzten Lied. Was habe ich hier übersehen?

Gruß

Nach jede mp3 wird automatisch nextTrack ausgeführt.
Nach dem letzten Track wird der current Track auf 0 geserzt, damit man bei Druck auf weiter, von vorne hören kann.

Es ist so geschrieben das die Playlist läuft und am Ende steht.
Erst mit Druck auf Play oder weiter gehts von vorne los.

Dein mp3 Aufruf triggert nextTrack nachdem currentTrack zurück gesetzt wurde, somit beginnt die Playlist von vorne.

Das ist tricky, da nextTrack nach jeder mp3 getriggert wird. Meist sogar mehrmals.

Eventuell musst du das zurück setzten von currentTrack anders behandeln oder raus nehmen.

Ok, dann muss ich mir da was überlegen und probieren. Danke dir.