Fragen zum DFPlayer mini (Lexikon)

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Hallo @Zitronenfalter,

      prima geworden!

      Anmerkungen zum Demoprogramm:
      Bei mir funktioniert die Controllerauswahl nicht.
      Bei Const Controller = 3 bleibt optisch zwar $regfile = "m328pdef.dat" stehen, nach dem Kompilieren fordert Bascom im Brenndialog aber einen ATMega8.
      Die Struktur habe ich dann auskommentiert und "normal" $regfile = "m328pdef.dat" eingefügt

      Der Befehl Spc(N) ist inkompatibel mit der I2C LCD Library. Abhilfe schafft ein String mit 20 Leerzeichen.

      LG
      Mathias
      Heisenberg bei einer Radarkontrolle:
      Polizist: "Wissen Sie, wie schnell Sie waren?"
      Heisenberg: "Nein. Aber ich weiß genau, wo ich jetzt bin!"

    • mac5150 schrieb:

      Bei mir funktioniert die Controllerauswahl nicht.
      Das kann ich jetzt nicht nachvollziehen (habe gerade keinen 328er hier), kann aber alle aufgeführten Controller auswählen und jeweils fehlerfrei kompilieren, brennen kann ich aktuell nur den 1284p weil ich diese Hardware gerade hier habe und das funktioniert auch einwandfrei.
      Natürlich meckert dann BasCom, dass kein 328 gefunden wird wenn ich einen anderen Controller auswähle, aber das war es dann auch schon.
      Eventuell kann das ja noch wer anderer ausprobieren weil das wieder mal etwas unlogisch ist :D .

      mac5150 schrieb:

      Der Befehl Spc(N) ist inkompatibel mit der I2C LCD Library. Abhilfe schafft ein String mit 20 Leerzeichen.
      Habe ich in der Demosoftware korrigiert und verwende da nun auch einen String.
      Kann aber noch etwas dauern, bis du das herunterladen kannst, da der Beitrag noch freigeschaltet werden wird, also etwas Geduld bitte.
    • Eine weitere Ergänzung (die bei Gelegenheit auch ins Lexikon einfließen wird ;) ).

      Der DFplayer nimmt keine Befehle an während er selbst etwas auf der RS232 sendet (seine diversen Statis z.B.)

      Aufgefallen ist mir das beim Versuch, eine Ansage zu realisieren die aus einzelnen Textelementen besteht.
      Ich wollte dazu einfach das Mute auswerten (L=Spricht, H=Ruhe).
      Das Problem ist wohl, dass Mute beim Statuswechsel geändert wird aber dann sendet das Modul noch seinen Endestatus aus (und das zeitweise sogar zweimal).
      Man muss also solange warten, bis dieser Transfer beendet ist (indem man die Daten auch entsprechend verarbeitet) und kann erst dann den nächsten Befehl senden.
      Weiters kommt hinzu, dass das Modul zum "suchen" der abzuspielenden Datei ebenfalls etwas Zeit braucht (was in dem Umstand resultiert, dass der Mute-Pin eben auch um diese Zeit verzögert den Status ändert).
      Das alles macht dann ein "flüssiges" Sprechen nicht möglich.
    • Gibt es Unterschiede zwischen USB und sdcard bezüglich der Datenstruktur und der Zugriffsgeschwindigkeit?
      Muss man, wenn keine sdcard drin ist, explizit auf USB umschalten, oder erkennt der player das automatisch?
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Das kann ich jetzt gar nicht sagen, da ich die Platinen zwar auch für USB route, aber bisher nicht bestückt hatte.
      Es kann aber durchaus sein, dass das automatisch geht, weil man IMHO sogar per Befehl auf die verschiedenen Geräte umschalten kann. Die Struktur sollte eigentlich gleich sein.
      Im ungünstigsten Fall muss man halt mit einem Init entsprechend umschalten.
      Bei mir dauert dieser Init einige wenige Sekunden, allerdings kontrolliere ich dabei auch wieviel Dateien sich im jeweiligen Verzeichnis befinden (im MP3-ORDNER sind es in der Jukebox über 900 Dateien!). Ich denke mal, dass ohne diese "Kontrollzählung" der Player sehr schnell bereit ist.
    • Ich stehe vor einen Problem. Ich habe in meinem Programm die lib so eingefügt

      BASCOM-Quellcode

      1. $include "LIB_DFplayerMini.bas"
      2. $regfile = "m328pdef.dat"
      3. $crystal = 16000000
      4. $hwstack = 64
      5. $swstack = 32
      6. $framesize = 30
      7. Baud 9600
      8. ...


      in der lib sind die Konstanten so gesetzt

      BASCOM-Quellcode

      1. Const MP3_COMPORT = 1
      2. Const MP3_IRQ = 1
      3. Const MP3_BASE = 0
      4. Const MP3_SUBMODE = 1
      jetzt bekomme ich aber beim Befehl
      Mp3_playfromfolder

      Quellcode

      1. 'subs
      2. Aufwachen:
      3. Mp3_wakeup
      4. Mp3_setsource(1) 'sdcard
      5. Mp3_playfromfolder(1 , 1)
      6. Return
      7. Verabschieden:
      8. Mp3_setsource(1) 'sdcard
      9. Mp3_playfromfolder(40 , 1)
      10. Mp3_standby
      11. Return
      Alles anzeigen
      die Fehlermeldung:
      Error : 130 Line : 162 Incorrect number of parameters. The number of parameters must be [ 2] , in File : G:\Bascom\Sprechender timer\Sprechender_Timer_V0.01.bas
      Error : 130 Line : 167 Incorrect number of parameters. The number of parameters must be [ 2] , in File : G:\Bascom\Sprechender timer\Sprechender_Timer_V0.01.bas
      die Zeilennummern beziehen sich natürlich auf die Zeilen, wo mp3_playfromfolder steht. Ich bin grad ratlos a_27_b277ca12
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Das ist die Lib_dfplayermini.bas von @Zitronenfalter bascomforum.de/index.php?attac…247-lib-dfplayermini-zip/
      Wie gerade schon geschrieben, ein call nimmt den Fehler weg.
      Andere subs, wie das Setzen der Lautstärke funktionieren auch ohne call
      Da Config Submode = New eingestellt ist, entfällt das declare der subs sowieso.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Warum sich dieses Verhalten zeigt, kann ich jetzt auch nicht sagen. Ich binde (besser kopiere)) die "Lib" allerdings immer komplett an geeigneter Stelle im eigentlichen Code ein (irgendwo am Anfang halt).
      Der Kompiler nimmt IMHO ohnehin nur den Code der verwendet wird.

      Darüber hinaus kann es ja auch notwendig sein innerhalb der "Lib" noch die Open anzupassen (bei Soft-RS232), daher wird das IMHO nicht immer doch gar nicht mit dem Include funktionieren können weil man ja in der Lib Änderungen vornehmen müsste.
    • Ok, ich wollte das $include wegen der Übersichtlichkeit machen.
      Und weil ich dich grad' dran hab', ich verwende einen Arduino uno. Um da TX und RX zu verwenden ist doch Const Mp3_comport = 0 die richtige Einstellung, wenn ich das so
      Open "COMD.1:9600,8,n,1" For Output As #255
      Open "COMD.0:9600,8,n,1" For Input As #254
      Dim MP3_Serialbuffer As String * 1
      eingestellt lasse?
      Die Lautstärke wird per Befehl angepasst, aber es spielt noch nix a_166_29aea317
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Der uno ist ein mega328. D.0 und D.1 sind die hw-pins.
      Was jetzt grad blöd ist, die Lautstärke wird geändert, geht also die Komunikation. Aber er spielt nix. Wenn ich die play-Taste, oder next/prev drücke, dann spielt er was. Da muss ich noch suchen, wo der Wurm drin steckt.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • tschoeatsch schrieb:

      Da muss ich noch suchen, wo der Wurm drin steckt.
      Nur ein Schuss ins blaue, aber wenn mit den Play-Befehlen auf nicht existente Dateien zugegriffen wird, ist das genau das Verhalten, da die LIB nicht überprüft ob das File existiert (ich selbst prüfe da auf das Busy-Signal). Ich meine aber, dass das Modul an sich sehr wohl was zurücksendet (Specified track is not found= 7E FF 06 40 00 00 06 xx xx EF; xx ist die Prüfsumme!) wenn nichts gefunden wird.

      PS. GsD werden Entwürfe gespeichert, das Forum hat mal wieder einen Post verschluckt.
    • Jetzt plappert er. Ich denke, es lag an der Benennung der files. Mit Tasten spielt er auch 01.mp3 ab, mit Steuerung durch Befehle braucht er wohl unbedingt 001.mp3.
      Jetzt muss ich nur noch die optimalen Zeiten für das Ausgeben von verketteten files austüfteln. bitwait busy,set langt nicht, es braucht wohl danach noch eine kurze Pause, sonst kommt der nächste Befehl zu schnell.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • tschoeatsch schrieb:

      Es lag an der Benennung der Files.
      Das ist mir in der Vergangenheit auch schon aufgefallen, und würde sogar bedeuten, dass die FAT ein Nebenschauplatz ist und der auch nach Dateinamen sucht.
      Ich denke aber, dass die Dateinamen immer drei oder vierstellig und dann gefolgt von Erklärtext sein müssen, abhängig ob im Root, Unterordner oder MP3-Ordner.

      tschoeatsch schrieb:

      Jetzt muss ich nur noch die optimalen Zeiten für das Ausgeben von verketteten Files austüfteln
      Eventuell funktioniert folgende Variante:
      Von jeder Datei wird in einer Tabelle die Wirklaufzeit gespeichert wobei an das Fileende eine Pause von einer (oder mehr) Sekunde hinzugefügt wird.
      Die Datei wird abgespielt aber nach Zeitablauf wird bereits die nächste so konfigurierte Datei angefordert und abgespielt (man kann ja während dem Abspielen Befehle welche auch das Abspielen betreffen absetzen).
      Dies erfordert halt die exakte Laufzeit des Sounds ohne Pause.
      Es darf halt der jeweils nächste Befehl erst abgesetzt werden, nachdem dem Modul etwas Zeit gelassen wurde um den gerade empfangenen Befehl zu bestätigen, weil in dieser Zeit ist es ja "blind".

      Wie sieht es aus, wenn anstatt von MP3-Files WAV-Files verwendet werden?
    • tschoeatsch schrieb:

      Jetzt plappert er.
      Alles Bestens, es geht wie gewünscht. Ich hab' schon meinen Spaß mit 'Babette', meinen neuen Küchentimer.
      Dateien
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Ich hab' jetzt diesen code

      BASCOM-Quellcode

      1. Info_einstellung:
      2. Letzte_taste = &B1111
      3. Temp = Minuten + 13
      4. ' Mp3_setsource(1) 'sdcard
      5. Call Mp3_playfromfolder(einl_info_e , 1)
      6. Waitms 200 : Bitwait Busy , Set : Waitms 50
      7. Temp = Stunden + 1
      8. Call Mp3_playfromfolder(std_min , Temp)
      9. Waitms 200 : Bitwait Busy , Set : Waitms 50
      10. Call Mp3_playfromfolder(std_min , 74)
      11. Waitms 200 : Bitwait Busy , Set : Waitms 50
      12. Temp = Minuten + 14
      13. Call Mp3_playfromfolder(std_min , Temp)
      14. Waitms 200 : Bitwait Busy , Set : Waitms 50
      15. Call Mp3_playfromfolder(einl_info_e , 2)
      16. Return
      Alles anzeigen
      wobei die #74 ein gesprochenes 'und' ist. Die Stunden gehen bis 12 und die Minuten von 0 bis 59 als 59 files. Die so entstehenden Pausen sind akzeptabel.
      Was auch am dfplayer ganz gut ist, man kann im laufenden Plappern den Befehl für die nächste Ausgabe senden. Das ist ganz praktisch, wenn Tasteneingaben kommentiert werden und man schon die nächste Taste drückt.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------