Audio Adventskalender DFPlayer_mini

Moin,

ja, wenn ich den Test Sketch vom MP3 Modul nehme, wird Track XX mit dem befehlt mp3.playMp3Folder(11) z.B. Track 11 wieder gegeben.

die Variable zeigt mir ja Seriell an das z.B. der 11. des Monats ist, daher verstehe ich ja nicht weshalb dann nicht wenn die Variable die zahl 11 Ausgibt, der Track 11 nicht gespielt wird.

Hi

Wird denn eine fest dort eingetragene Zahl abgespielt?
Vll. musst Du nur die Variable auf int casten? (vll. auch nur eine blöde idee ...)
Also versuche Mal (int)

mp3.playMp3Folder(11);
mp3.playMp3Folder((int)now.day());

MfG

Hallo, also die Variablemit Fix Zahl versehen funktioniert, mit Int keine reaktion, wie ohne

Dark5:
Hallo, also die Variablemit Fix Zahl versehen funktioniert.....

Das hatte ich dir doch schon in meinem Post#5 und Post #14 geschrieben.
Hattest du das nicht getestet ? Oder liest du die Post nicht richtig ?

Hi

Irgend was wird die Lib ja an Zahl haben wollen - caste die Zahl Mal in alle möglichen Datentypen und schaue, welche MP3 dann gespielt wird.

uint64_t i=1
mp3.playMp3Folder((byte)i);
i++;
mp3.playMp3Folder((uint8_t)i);
i++;
mp3.playMp3Folder((int8_t)i);
i++;
mp3.playMp3Folder((uint16_t)i);
i++;
mp3.playMp3Folder((int16_t)i);
i++;
mp3.playMp3Folder((uint32_t)i);
i++;
mp3.playMp3Folder((int32_t)i);
i++;
mp3.playMp3Folder((uint64_t)i);
i++;
mp3.playMp3Folder((int64_t)i);
i++;
mp3.playMp3Folder((char)i);
i++;
mp3.playMp3Folder((float)i);
i++;
//....

Nett wäre, wenn für die ganzen I auch ein Track abspielbar bereit läge.
Alternativ könnte man sich auch die verwendete LIB anschauen, welches Format die Methode haben will oder sogar erkennen, was mit der übergebenen Zahl dort passiert - oder eben NICHT passiert und vll. auch, warum.

MfG

In DFRobotDFPlayerMini\DFRobotDFPlayerMini.h kannst Du #define _DEBUG aktivieren, dann siehst Du die Kommunikation:

```
Audio Advent Calendar

sending:7E FF 6 C 1 0 0 FE EE EF

sending:7E FF 6 C 1 0 0 FE EE EF

sending:7E FF 6 6 1 0 14 FE E0 EF
playing track Number: 18

sending:7E FF 6 9 1 0 2 FE EF EF

sending:7E FF 6 12 1 0 12 FE D6 EF
```

Die 18 (heutiger Tag dezimal) könnte der 12 (hex) entsprechen.

postmaster-ino:
Irgend was wird die Lib ja an Zahl haben wollen -

void playMp3Folder(int fileNumber);

Hi

Dann hätte der Cast auf INT aber Früchte tragen müssen.

MfG

PS: Warum eigentlich int? Nur, weil wir wohl keine 32-tausend Musikstücke zusammen bringen, werden dort trotzdem keine Track-Titelnummern unter Null anzutreffen sein.

agmue:
sending:7E FF 6 12 1 0 12 FE D6 EF

Die Bytes der letzten Zeile bedeuten:

7E .... Start byte   
FF .... <dieses Byte ist immer FF>
 6 .... Number of bytes in command (es sind immer 6)
12 .... Command: Play file from mp3 folder
 1 .... Send feedback (1: send feedback, 0: no feedback)
 0 .... Parameter 1: In diesem Fall die Tracknummer HIGH BYTE
12 .... Parameter 2: Die Tracknummer LOW BYTE, also dezimal 18
FE .... Checksume 
D6 .... Checksume
EF .... End command

Also: Spiele Track Nummer 18 im Folder "mp3" ab.
Der Dateipfad der Datei auf der SD-Karte muss so lauten:
[SDCARD]:\mp3\0018.mp3

Es ist leider nicht ganz klar, welchen Code der TO zur Zeit benutzt.
Wenn es jener aus #17 sein sollte, dann wird das so nicht funktionieren, weil dabei der Play-Befehl ständig wiederholt wird (viele Male pro Sekunde) und der Player keine Chance hat den Track zu spielen, weil immer sofort der nächste Play-Befehl kommt... Edit: Die Play-Funktion wird nur einmal aufgerufen, durch "exit(0)" geht das Programm dann in eine Enlosschleife (siehe #35).

Also: ohne aktuellen Code ist es sehr schwierig zu helfen.

Kommentiere doch mal das exit(0) aus

mfG Thorsten

Danke für die Rege Anteilnahme, aber da mir das ganze zu weit in die Tiefste Materie geht, und ich noch gutes Stück am Anfang stehe. hatte ich gehoft das es simpler wäre die Lösung für den Umbau anstelle des JQ den DFP zu benutzen.

Dies scheint leider nicht der weg zu sein, die verwendeten Libs habe ich aktuell aus dem Netz gezogen, denke sie werden Aktuel sein, ebenso die RTC Lib usw.

Da ich die Ausgabe ansich bekomme, also zumindest mit der eingabe (now.day()) und die angezeigte Zahl im Seriellen Monitor Korrekt ist, sollte dies denke ich auch beim Play Befehl des DFP als ergebnis in () auftauchen. bzw angesteuert werden.

Da mir wie gesagt die ganze Thematik zwar schon wichtig ist, aber ich Aktuell nicht mal mehr 3 Tage Zeit für die Umsetzung habe, da wie bereits in einem Vorpost erwähnt, das Ganze Mittwoche verpackt in der Post sein müsste, Bedanke ich mich nochmals bei allen welche hier versucht haben mir zu helfen.

Nur wie gesagt, es geht mir für ein Bastelprojekt aktuell zu sehr in die Tiefsten der Materie, so weit bin ich mit den Arduinos noch nicht, als das ich alles was an Vorschlägen kommt umgesetzt bekomme und beantworten kann. Meine Nichte bekommt einen "altmodischen" Schubladen Kalender, mit was zum Nachschen und einem USB Stick für jeden Tag drin.

ist zwar nicht die Schönste Variante, aber so kann sie den vor 2 Jahren bekommenen USB/SD/BT Lautsprecher aus eigenbau nuzten.

Danke dennoch, falls irgendjemand mal einen funktionierenden Audio Adventskalender für bsolute neueinsteiger hinbekommt, werde ich mich nochmal damit befassen, aktuell fehlt mir leider die Zeit um so gezielt ins Detal mich ein zu Arbeiten.

Hier übrigens noch der Original Sketch, welcher als Alternative zu dem JQ Modul dann doch einmal gepostet wurde:

#include "DFRobotDFPlayerMini.h"
#include "SoftwareSerial.h"
#include <Wire.h>
#include "RTClib.h"
SoftwareSerial SoSe(10, 11);
DFRobotDFPlayerMini myDFPlayer;
RTC_DS3231 rtc;

void setup() {
SoSe.begin(9600);
myDFPlayer.begin(SoSe);
rtc.begin();
delay(500);
myDFPlayer.volume(20);
myDFPlayer.EQ(DFPLAYER_EQ_BASS);
}

void loop() {
DateTime now = rtc.now();

if (now.month() != 12) {
myDFPlayer.playMp3Folder(25);
exit(0);}
if (now.day() > 24) {
myDFPlayer.playMp3Folder(25);
exit(0);}
myDFPlayer.playMp3Folder(now.day());
exit(0);
}

Es sei gesagt auch hier die änderung auf das DS1307, durchgeführt, und auch hier 0 Audio Ausgabe beim Anpassen des gesetzten Datums.

Schade halt, aber Danke trotzdem, und schönen Abend noch.

Hast du es ohne exit (0) versucht ?
Ich habe zwar keinen mp3 modul kommt erst Dienstag. Habe mit deinem Sketch aber so rumgespielt und exit(0) kann meiner Meinung nicht gehen.

Ja Exit auskommentiert, ergab keine änderung.
Da die Frage irgendwie mehrfach vorkam, hier der Link zu den denke relevanten Libs

sind als RAR gepackt, DFP, RTC usw. Serial hab ich so nicht extra, nutze die IDE 1.8.8 habe es aber auch mit 1.8.0 bis 1.8.8 ausprobiert

MfG

Hi

Finde diese Art der Datei-Weitergabe etwas unglücklich.
In zwei Wochen ist der Link tot - habe aber auch keine große Lust, die 1,3MB hier irgendwie dauerhafter anzuhängen.

Vorab: Ich habe die .rar nicht gesaugt, mir ist also nicht bekannt, wie der Inhalt ausschaut, ob man darin auf die jeweilige Quelle schließen kann.

Viel sinnvoller als die .rar wären Links zu den verwendeten Libs - dort kann dann Jeder sowohl die hier benutzte, wie die dann bereits aktualisierte Version selber saugen.

Nur meine bescheidene Meinung - Google vergisst zwar Nichts, aber ob dieses Archiv in ferner Zukunft noch irgendwie gesaugt werden kann, wage ich zu bezweifeln.

MfG

PS: Ich müsste dort eine eMail-Addy eintragen, damit ich den Download-Link bekomme - somit würde ich wohl zukünftig noch mit Werbung 'amüsiert' - bekomme schon genug unangeforderte Post.

Aufgeben gilt nicht! :slight_smile:

Wenn gar nicht anders geht und es auf Schönheit nicht ankommt, dann verwende doch so was:

switch (day()) {
    case 1:
      myDFPlayer.playMp3Folder(0001);
      break;
     case 2:
      lmyDFPlayer.playMp3Folder(0002);
      break;

...
    case 24:
      lmyDFPlayer.playMp3Folder(0024);
      break;
   default:
      break;}

Das ist unbrauchbar, denn 0024 = 20 dezimal. Zahlen, die mit 0 beginnen, werden als Oktalzahlen betrachtet.

Gruß Tommy

Also ich habe das mit einem DFPlayer Mini und einer RTC DS3231 jetzt mal nachgebaut.
Und bei mir funktioniert es mit dem Code aus #29.

Verwendete Libs:
RTC: GitHub - adafruit/RTClib: A fork of Jeelab's fantastic RTC Arduino library
DFPlayer: GitHub - DFRobot/DFRobotDFPlayerMini: Arduino library for DFPlayer

Und weil ich nicht tagelang warten will, habe ich auf die Minuten "getriggert".

Hier nochmal der Code (fast identisch mit jenem aus #29):

#include "DFRobotDFPlayerMini.h"
#include "SoftwareSerial.h"
#include <Wire.h>
#include "RTClib.h"
SoftwareSerial SoSe(10, 11);
DFRobotDFPlayerMini myDFPlayer;
RTC_DS3231 rtc;

void setup() {
  SoSe.begin(9600);
  myDFPlayer.begin(SoSe);
  rtc.begin();
  delay(500);
  myDFPlayer.volume(20);
  myDFPlayer.EQ(DFPLAYER_EQ_BASS);
}

void loop() {
  DateTime now = rtc.now();

  if (now.month() != 11) {
    myDFPlayer.playMp3Folder(60);
    exit(0);
  }
  if (now.day() > 24) {
    myDFPlayer.playMp3Folder(60);
    exit(0);
  }
  myDFPlayer.playMp3Folder(now.minute());  // <<-- Einziger Unterschied zum Code aus #29
  exit(0);
}

Auf der SD-Card befindet sich ein Ordner "mp3". Darin befinden sich 60 Dateien mit folgenden Namen:
0001.mp3 bis 0060.mp3
Und immer wenn ich die Reset-Taste drücke wird der entsprechende "Minuten-Track" gespielt.

Was macht exit(0) ?
Es wird zu:

cli();   //disable interrupts
while(1);    //forever loop

siehe: Add a function noLoop() to the standard functions - #9 by Coding_Badly - Suggestions for the Arduino Project - Arduino Forum

Das heißt, nach einmaligem Abspielen eines Tracks passiert nichts mehr und es ist ein Reset (oder Strom Aus, Strom An) nötig.

uxomm:
Also ich habe das mit einem DFPlayer Mini und einer RTC DS3231 jetzt mal nachgebaut.
Und bei mir funktioniert es mit dem Code aus #29.
.....

Und was sagt uns das ?

Es liegt ein Fehler vor, den der TO uns verschweigt.

Salü,

Ich hab keinen DS3231 zur Hand, und leider auch die Zeit nicht, wie gesagt Mittwoch Deadline, und bis dahin bekomme ich keins mehr, und auch nicht zusammengestrickt, auch wenn die Kiste ansich steht, fehlt der DS, wenns nur daran liegt OK, mein fehler, aber ich hatte mich bis aufs MP3 Modul an die Original Vorlage gehalten.

DER JQ war nicht so Zeitnah verfügbar, der 1307 chon, alternative war bei Orderung nicht bekannt. Bin wie gesagt noch sehr neu im Ardoino dasein, und habe wenig umgebungs HArdware zum "spielen" davon zu hause.

Fakt ist leider, ich bekomm da keinen Mux aus der Kombination, egal wechen Sketch ich probiere, ausser ein knattern aus dem Lautsprecher passiert leider nicht viel.

das einzige was ich noch ausprobieren kann, ist den ORdner der MP3 neu zu bennen, und die MP3 selbst neu zu bennenen, da ich sie nur z.b. 021 genannt habe, und der Ordner aus der Original Anleitung noch 000 heisst.

Da ich hier MP3 als Ordner name vernehme, werde ich das nochmal ausprobieren.

MfG

Dark5:
....
das einzige was ich noch ausprobieren kann, ist den ORdner der MP3 neu zu bennen, und die MP3 selbst neu zu bennenen, da ich sie nur z.b. 021 genannt habe, und der Ordner aus der Original Anleitung noch 000 heisst.

Da ich hier MP3 als Ordner name vernehme, werde ich das nochmal ausprobieren.

Genau das wird das Problem sein.

Sorry, dass wir da nicht nachgefragt haben.
Allerdings sollte so was in einer Bauanleitung drin stehen.

Das Problem, 1. Bauanleitung MP3 Modul JQ-6500-28P, Modify wegen lieferbarkeit auf DFP Mini, dazu Problem 2. keine wirkliche Anleitung, sondern selbst gestrickt, und bisher keinen vermerk auf Ordnername mp3 gesehen, bzw ggf. überlesen.

Probier ich heute Abend irgendwann mal aus, wenn ich zu hause bin, ist ja nur umbennenen auf der SD