Das wird so auch nichts werden der DF Player nutzt bei Dir die Schnittstelle schon, Das fällt Dir irgendwann auf die Füße
Nachtrag
Was ist bei Dir Serial1 ich denke das ist ein UNO
Gruß Heinz
Das wird so auch nichts werden der DF Player nutzt bei Dir die Schnittstelle schon, Das fällt Dir irgendwann auf die Füße
Nachtrag
Was ist bei Dir Serial1 ich denke das ist ein UNO
Gruß Heinz
Das brauchst Du doch nicht das ist Bestandteil der lib. hab ich jetzt erst gesehen
Wie oben beschrieben, sind die Stati Playing und Stopped in Verbindung mit der Funktion player.checkPlayState() von Bedeutung....
Hallo zusammen,
ich denke ich habe es jetzt hinbekommen. Auf dem MEGA (verbunden über RX1 und TX1) scheint es zu funktionieren. Auf dem Nano (wo ich es eigentlich laufen möchte- über RX0 und TX1) geht die Musik mal an mal nicht. Mehr nicht als das es geht.
Dieses Thema mit dem Serial verstehe ich nicht leider. Kann mir jemand einfach erstmal sagen an welche Pins des Nanos ich RX und TX vom MP3 Player ich anschließen soll und wie der Code dann geändert werden muss.
Vielen Dank!
#include <Arduino.h>
#include "DYPlayerArduino.h"
//DY::Player player;
DY::Player player(&Serial);
const byte SoundPin_1 = A1;
const byte SoundPin_2 = A2;
bool SoundPin_1_Status;
bool Playing_1_Status;
bool SoundPin_2_Status;
bool Playing_2_Status;
typedef enum class PlayState : int8_t
{
Fail = -1, // UART Failure, can be a connection or a CRC problem.
Stopped = 0,
Playing = 1,
Paused = 2
} play_state_t;
void setup() {
pinMode(SoundPin_1, INPUT_PULLUP);
pinMode(SoundPin_2, INPUT_PULLUP);
player.begin();
player.setVolume(30); // 50% Volume}
Serial.begin(9600);
}
void loop() {
SoundPin_1_Status = !digitalRead(SoundPin_1);
SoundPin_2_Status = !digitalRead(SoundPin_2);
Serial.print(SoundPin_1_Status) & Serial.print(Playing_1_Status) & Serial.print(SoundPin_2_Status) & Serial.println(Playing_2_Status);
if (SoundPin_1_Status==1 && Playing_1_Status==0) {
Playing_1_Status = 1;
player.playSpecified(1);
player.play();
}
if (SoundPin_2_Status==1 && Playing_2_Status==0) {
Playing_2_Status = 1;
player.playSpecified(3);
player.play();
}
if (SoundPin_1_Status == 0 && SoundPin_2_Status == 0) {
Playing_1_Status = 0;
Playing_2_Status = 0;
player.stop();
}
//if (SoundPin_1_Status == 0) {
//Playing_1_Status = 0;
//player.stop();
//}
//if (SoundPin_1_Status == 0) {
//Playing_1_Status = 0;
//player.stop();
// }
delay(20); // Taster entprellen }
}
Normalerwiese sind die Pins vom Nano (auch bei den Clones) doch beschriftet.
Rx und Tx zwischen zwei Geräten müssen immer über Kreuz verbunden werden. Der Sender(TX) von einer Seite, muss mit dem Empfänger(RX) der „anderen“ Seite verbunden sein.
Der Code muss eigentlich gar nicht geändert werden.
Dann habe ich ja alles richtig gemacht und trotzdem will der nicht.
Wie bindet man in den Code ein, dass man den Status des Players sieht: Spielt, stoppt gerade…?
Und wo sieht man es dann? Im SerialMonitor?
Der Unterschied ist, dass der Mega 2 Serielle Schnittstellen hat, der Nano nur eine (und die ist belegt durch die USB Schnittstelle.) Beim Nano brauchst du SoftwareSerial.
Hallo,
aus dem Beispiel deiner lib
#include <Arduino.h>
#include "DYPlayerArduino.h"
#include <SoftwareSerial.h>
// Initialise on software serial port.
SoftwareSerial SoftSerial(10, 11);
DY::Player player(&SoftSerial);
Du kannst beim Nano die standard Serielle nur für den DF Player nutzten nicht gleichzeitig noch für den Monitor der IDE.
Also nimm die standard für die IDE und die Soft fur den DF Player
Die lib SoftwareSerial.h musst Du eventuell noch installieren.
Übrigens , da waren wir in #7 schon mal ![]()
Hallo
den Status des Player kannst Du sicher so abfragen
Serial.print (player.checkPlayState());
Dann bekommst DU die Zahlen ausgegeben
Ansonsten ging es sicher noch mit mit einem Swich case.. Konstrukt
Sorry @ec2021 das war für den T0 gedacht falscher Button gedrückt
Warum beides...? Wenn ich mir ein Beispiel der Library anschaue reicht ein player.playSpecified(Titelnummer); um eine bestimmte Titelnummer abzuspielen.
Ich habe auch mal herumprobiert und muss gestehen, dass ich auf meinem Nano Clone den MP3Player mit dieser "DYPlayerArduino.h" Bibliothek und SoftwareSerial nicht ans funktionieren gebracht habe.
Mit der "DFRobotDFPlayerMini.h" funktioniert das aber einwandfrei. Bei folgendem Beispiel werden zwei Taster, die jew. an A1 und A2 (pinmode INPUT_PULLP) angeschlossen sind abgefragt.
Wird der Taster an A1 gedrückt, wird das erste MP3 File abgespielt, wird der an A2 gedrückt wird das zweite MP3 File abgespielt.
RX/TX sind Pin D4 und D5.
#include "SoftwareSerial.h"
#include "Button_SL.hpp"
#include "DFRobotDFPlayerMini.h"
constexpr uint8_t RX {5};
constexpr uint8_t TX {4};
SoftwareSerial mySoftwareSerial(RX, TX);
DFRobotDFPlayerMini dfrPlayer;
// Zwei Buttons definieren...
Btn::ButtonSL bArray[] {
{A1, 200}, // Pin, long press ms
{A2, 200},
};
constexpr uint8_t BUTTON_COUNT {sizeof(bArray) / sizeof(bArray[0])};
void setup() {
Serial.begin(115200);
mySoftwareSerial.begin(9600);
if (!dfrPlayer.begin(mySoftwareSerial)) {
while (true) {
Serial.print(".");
delay(1000);
}
}
dfrPlayer.volume(20);
Serial.println("Start");
for (auto &b : bArray) { // Initialisiere Taster
b.begin();
b.releaseOn(); // Release nach long press ms
}
delay(4000); // Warten auf Initialisierung des MP3 players
}
void loop() {
// wiederhole für jeden Taster
for (uint8_t i = 0; i < BUTTON_COUNT; i++) {
if (bArray[i].tick() != Btn::ButtonState::notPressed) { // wenn ein Taster gedrückt wird
dfrPlayer.play(++i);
}
}
}
Ist im Prinzip das Gleiche wie das hier:
Nur für den Nano statt eines ATTinys
Hallo zusammen,
ja, SoftwareSerial geht mit dem Nano scheinbar nicht. Mit dem MP3-Player funktioniert Wiederrum die "DFRobotDFPlayerMini.h" nicht.
Das klappt auch nicht: Serial.print (player.checkPlayState());
Ich habe es jetzt auf dem Mega nochmal probiert. Ansicht gehts aber die Sounds fangen erst nach etwa 10 Sekunden an zu laufen. Ich habe schon eine kleinere und schnellere Micro-SD-Karte ausprobiert und auch eine kleine/sehr kurze MP3 aber kein Erfolg.
Ich hätte nicht gedacht, dass sowas simples so schwer sein kann. Wenn Ihr keine andere Idee wegen dem Versatz habt, dann muss ich wohl einen anderen MP3 Player kaufen.
PS: Bitte entschuldigt mich. Ich hab erst mit dem Thema Arduino angefangen. Es gibt eine recht gute Videoreihe dafür aber ich bin noch beim ABC (auch wenn mir die Excelkenntnisse hier etwas weiterhelfen). Daher verstehe ich leider nicht jeden Tipp, der hier gutgemeint gegeben wurde.
#include <Arduino.h>
#include <DYPlayerArduino.h>
//DY::Player player;
DY::Player player(&Serial2);
const byte SoundPin_1 = A1;
const byte SoundPin_2 = A2;
bool SoundPin_1_Status;
bool Playing_1_Status;
bool SoundPin_2_Status;
bool Playing_2_Status;
void setup() {
pinMode(SoundPin_1, INPUT_PULLUP);
pinMode(SoundPin_2, INPUT_PULLUP);
player.begin();
player.setVolume(30); // 50% Volume}
Serial.begin(9600);
}
void loop() {
SoundPin_1_Status = !digitalRead(SoundPin_1);
SoundPin_2_Status = !digitalRead(SoundPin_2);
//Serial.print(SoundPin_1_Status) & Serial.print(Playing_1_Status) & Serial.print(SoundPin_2_Status) & Serial.println(Playing_2_Status);
if (SoundPin_1_Status==1 && Playing_1_Status==0) {
Playing_1_Status = 1;
player.playSpecified(4);
}
if (SoundPin_2_Status==1 && Playing_2_Status==0) {
Playing_2_Status = 1;
player.playSpecified(5);
}
if (SoundPin_1_Status == 0 && SoundPin_2_Status == 0) {
Playing_1_Status = 0;
Playing_2_Status = 0;
player.stop();
}
//if (SoundPin_1_Status == 0) {
//Playing_1_Status = 0;
//player.stop();
//}
//if (SoundPin_1_Status == 0) {
//Playing_1_Status = 0;
//player.stop();
// }
//delay(20); // Taster entprellen }
}
Was setzt Du denn für einen MP3 Player ein?
Mit diesem funktioniert es jedenfalls problemlos:
Wie bitte, was?
Schau mal im Video
Ich habe eigentlich keine Lust mir dieses Video durchzukauen, nur weil Du dich kryptisch ausdrückst.
Ich bin fälschlicherweise davon ausgegangen, dass auch das von mir verwendete Modell benutzt wird. Aber jetzt ist mir auch klar , warum die Lib, die du verwendet hast, so heißt wie sie heißt und warum das bei meinem Miniplayer nicht funktioniert hat. Insofern habe ich etwas dazugelernt. Diese Art von MP3 Player kannte ich noch nicht.
Nun ja. Da kann ich leider nicht weiter helfen....
Sorry: Als Laie habe ich es so verstanden:
Der Mini läuft zwar erstmal auch ohne Wiederstände (usw.) zwischen RX oder TX oder an + zu schalten aber langfristig wird es nicht gutgehen.
Sorry, ich kann das nicht beurteilen aber das war für mich Argument genug für den DY-SV5W. Der hier als Outofthebox-Fertig präsentiert wird.
Meines Wissens reicht ein 1K Widerstand zwischen TX vom µC und RX vom MP3 Modul aus.
Was ist das Problem an einem 2Cent Artikel?
Ich hab sogar welche hier aber ich bin sauschlecht in löten...
Mit DY-SV5W konnte ich mir das ersparen (dachte ich ;-))