Go Down

Topic: Audio Adventskalender DFPlayer_mini (Read 2220 times) previous topic - next topic

Dark5

Also ich hab nun alles noch X mal überprüft und getestet, allerdings bleibt es bei Stille.

Er gibt ja an das der Track 1/17 gespielt wird, und das mit der Variablen day.now.

Allerdings spielt der Player nichts ab.

Ich blicks einfach nicht wieso er das nicht macht. ich habs auch versucht um zu setzen eine wenn now day =XX dann mp3.play(XX)

setzt er auch nicht um, ich bin aktuel mit meinem Latein am Ende, ich muss mich da irgendwann einmal ausführlicher mit beschäftigen, dafür sind meine Arduino und programier kenntnisse zu gering, und zu sehr eingerostet.

Danke dennoch für den versuch der Hilfe, aber ich bin an dem Punkt das ich leider aufgebe, da ich leider zu wenig Zeit dafür habe das gesamt Projekt fertig zu bekommen, da es am Mittwoch in den Versand gehen müsste, um rechtzeitig an zu kommen.

Danke und schönen Abend noch.

HotSystems

Verstehen kann ich das nicht.
Du solltest uns dann den aktuellen Sketch sowie ein Foto deines Aufbaus posten.
Irgend einen Fehler musst du da machen.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Dark5

Hallo,


Also der letzte zurecht gebaute Sketch führt zu einem Knattern im Lautsprecher für ca. 5-10 Sekunden, und dann verstummt die ganze Sache.

Die Seirelle Ausgabe ist Korrekt, aber wie gesagt immer noch Stumm, Habe mittlerweile auch versucht die Test MP3 um zu benennen, da die Datums Ausgabe bei z.b. 1.XX. 1 ist, und ich befürchtet habe das er ggf. mit 001 nicht zurecht kommt. Das war aber auch nicht das Problem.

Hier der sketch:

Code: [Select]


#include <DFRobotDFPlayerMini.h>
#include <SoftwareSerial.h>
#include <Wire.h>
#include "RTClib.h"

SoftwareSerial mySoftwareSerial(2, 3); // RX, TX
DFRobotDFPlayerMini mp3;
unsigned int numFiles; // Total number of files on media (autodetected in setup())
byte mediaType;        // Media type (autodetected in setup())
RTC_DS1307 rtc;         //create an rtc object

void setup() {
  Serial.begin(9600);
  Serial.println("Audio Advent Calendar");
  delay(500);

  pinMode(4, INPUT);
  pinMode(13, OUTPUT);

  mySoftwareSerial.begin(9600);
  Serial.begin(9600);
  mp3.begin(mySoftwareSerial);
  mp3.reset();
  delay(500);
  Wire.begin();
  rtc.begin();
  rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  mp3.volume(20);
  //mp3.disableLoop();
  //mp3.EQ(DFPLAYER_EQ_NORMAL);
}

void loop() {

  DateTime now = rtc.now();

  //if (mySoftwareSerial.status() != MP3_STATUS_PLAYING) {
    if (now.day() < 25) {
      if (now.month() == 11) {

        Serial.print("playing track Number: ");
        Serial.println(now.day());

        mp3.outputDevice(DFPLAYER_DEVICE_SD);
        mp3.playMp3Folder(now.day());             //, now.day());
      }
      else {
        Serial.println("not an advent day");
        delay(100);
        exit(0);
      }
    }
      exit(0);

  }
//  }




in der RX Leitung habe ich den 1KOhm verbaut, und natürlich den DFPLayer_Mini in Gebrauch nicht den JQ6500, Verdrahtung ansonsten identisch, also gleichen Anschlüsse in Verwendung

Dark5

#18
Nov 18, 2018, 12:45 am Last Edit: Nov 18, 2018, 12:46 am by Dark5
hier das ganze auf dem Steckboard,



im test wird die Uhrzeit Korrekt angegeben, und auch der Player gibt fehlerfrei seinen angesteuerten Track wieder, nur in der Kombination mit der Datumsabfrage/Vergleich spalte passiert nichts.
Die Monatsabfrage ist übrigens wegen der Testerei auf 11 gesetzt, würde wenns funktioniert hätte aber auf 12 geändert.


postmaster-ino

Hi

Wie ruft der MP3-Sketch den Titel 11 auf?
Kannst Du mit genau diesem Aufruf, also ohne Variable, den Titel in Deinem Sketch aufrufen?
ja -> irgend etwas stimmt mit der Variable nicht
nein -> irgend etwas stimmt mit der Initialisierung des MP3-Zeug nicht

MfG
Dein Problem, Dein Sketch, Deine Bilder.
Ob ich ohne Diese an Deinem Problem arbeiten will, entscheide aber immer noch ich.
Große Buchstaben? Immer wieder, neben Punkt und Komma, gerne gesehen.

Dark5

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.

postmaster-ino

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)
Code: [Select]
mp3.playMp3Folder(11);
mp3.playMp3Folder((int)now.day());


MfG
Dein Problem, Dein Sketch, Deine Bilder.
Ob ich ohne Diese an Deinem Problem arbeiten will, entscheide aber immer noch ich.
Große Buchstaben? Immer wieder, neben Punkt und Komma, gerne gesehen.

Dark5

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

HotSystems

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 ?
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

postmaster-ino

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.
Code: [Select]

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
Dein Problem, Dein Sketch, Deine Bilder.
Ob ich ohne Diese an Deinem Problem arbeiten will, entscheide aber immer noch ich.
Große Buchstaben? Immer wieder, neben Punkt und Komma, gerne gesehen.

agmue

#25
Nov 18, 2018, 07:48 pm Last Edit: Nov 18, 2018, 07:51 pm by agmue
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.

Irgend was wird die Lib ja an Zahl haben wollen -
Code: [Select]
void playMp3Folder(int fileNumber);
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

postmaster-ino

#26
Nov 18, 2018, 08:02 pm Last Edit: Nov 18, 2018, 08:03 pm by postmaster-ino
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.
Dein Problem, Dein Sketch, Deine Bilder.
Ob ich ohne Diese an Deinem Problem arbeiten will, entscheide aber immer noch ich.
Große Buchstaben? Immer wieder, neben Punkt und Komma, gerne gesehen.

uxomm

#27
Nov 18, 2018, 08:25 pm Last Edit: Nov 19, 2018, 02:15 am by uxomm
sending:7E FF 6 12 1 0 12 FE D6 EF
Die Bytes der letzten Zeile bedeuten:
Code: [Select]
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.
Always decouple electronic circuitry.

Thorsten4171

Kommentiere doch mal das exit(0) aus


mfG Thorsten

Dark5

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:

Code: [Select]
#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.

Go Up