Problem dotyczy połączenia modułów DFPlayer oraz HC05.
Chciałbym poprzez moduł HC05 sterować podstawowymi funkcjami odtwarzacza MP3.
Kod to połączenie dwóch projektów które oddzielnie działają bez problemu:
1. Sterowanie DFPlayerem za pomocą komend poprzez port com (115
2. Część kodu (bluetooth) którym z powodzeniem sterowałem oświetleniem led.
Po połączeniu w całość nie działa :/
Kod:
#include <SoftwareSerial.h>
#include "DFRobotDFPlayerMini.h" //DFPlayer
//BT
SoftwareSerial Bluetooth(0, 1);
char Data;
void sendData(String transmitData){
Bluetooth.println(transmitData);
}
//DFPlayer
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
int pausa = 0;
void setup(){
//BT
Bluetooth.begin(9600);
//DFPlayer
mySoftwareSerial.begin(9600);
Serial.begin(115200);
Serial.println();
Serial.println(F("DFRobot DFPlayer Mini"));
Serial.println(F("Initializing DFPlayer module ... Wait!"));
if (!myDFPlayer.begin(mySoftwareSerial)){
Serial.println(F("Not initialized:"));
Serial.println(F("1. Check the DFPlayer Mini connections"));
Serial.println(F("2. Insert an SD card"));
while (true);
}
Serial.println();
Serial.println(F("DFPlayer Mini module initialized!"));
myDFPlayer.setTimeOut(500); //Timeout serial 500ms
myDFPlayer.volume(10); //Volume set: 10
myDFPlayer.EQ(0); //Equlizer set: normal
}
void loop(){
if (Bluetooth.available() > 0){
Data = Bluetooth.read();
//Music select 1-9
if (Data >= '1' && Data <= '9'){
Serial.print("Music Started! Number: ");
Serial.println(Data);
Data = Data - 48;
myDFPlayer.play(Data);
}
//Stop
if (Data == 's'){
myDFPlayer.stop();
Serial.println("Music Stopped!");
}
//Pauza/Start
if (Data == 'p'){
pausa = !pausa;
if (pausa == 0){
Serial.println("Continue...");
myDFPlayer.start();
}
if (pausa == 1){
Serial.println("Music Paused!");
myDFPlayer.pause();
}
}
//Vol. up
if (Data == '+'){
myDFPlayer.volumeUp();
Serial.print("Current volume:");
Serial.println(myDFPlayer.readVolume());
}
//Vol. down
if (Data == '-'){
myDFPlayer.volumeDown();
Serial.print("Current Volume:");
Serial.println(myDFPlayer.readVolume());
}
//Next
if (Data == '>'){
myDFPlayer.next();
Serial.println("next:");
Serial.print("Current track:");
Serial.println(myDFPlayer.readCurrentFileNumber()+1);
}
//Previous
if (Data == '<'){
myDFPlayer.previous();
Serial.println("Previous:");
Serial.print("Current track:");
Serial.println(myDFPlayer.readCurrentFileNumber()-1);
}
}
}
Edit. Problem rozwiązany, po zmianie kodu z "if (Bluetooth.available() > 0)" na "while (Bluetooth.available() > 0)" oraz po dodaniu w nim na samym początku "Bluetooth.listen()" mogę sterować muzyką z poziomu HC05
Chciałbym poprzez moduł HC05 sterować podstawowymi funkcjami odtwarzacza MP3.
Kod to połączenie dwóch projektów które oddzielnie działają bez problemu:
1. Sterowanie DFPlayerem za pomocą komend poprzez port com (115
2. Część kodu (bluetooth) którym z powodzeniem sterowałem oświetleniem led.
Po połączeniu w całość nie działa :/
Kod:
#include <SoftwareSerial.h>
#include "DFRobotDFPlayerMini.h" //DFPlayer
//BT
SoftwareSerial Bluetooth(0, 1);
char Data;
void sendData(String transmitData){
Bluetooth.println(transmitData);
}
//DFPlayer
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
int pausa = 0;
void setup(){
//BT
Bluetooth.begin(9600);
//DFPlayer
mySoftwareSerial.begin(9600);
Serial.begin(115200);
Serial.println();
Serial.println(F("DFRobot DFPlayer Mini"));
Serial.println(F("Initializing DFPlayer module ... Wait!"));
if (!myDFPlayer.begin(mySoftwareSerial)){
Serial.println(F("Not initialized:"));
Serial.println(F("1. Check the DFPlayer Mini connections"));
Serial.println(F("2. Insert an SD card"));
while (true);
}
Serial.println();
Serial.println(F("DFPlayer Mini module initialized!"));
myDFPlayer.setTimeOut(500); //Timeout serial 500ms
myDFPlayer.volume(10); //Volume set: 10
myDFPlayer.EQ(0); //Equlizer set: normal
}
void loop(){
if (Bluetooth.available() > 0){
Data = Bluetooth.read();
//Music select 1-9
if (Data >= '1' && Data <= '9'){
Serial.print("Music Started! Number: ");
Serial.println(Data);
Data = Data - 48;
myDFPlayer.play(Data);
}
//Stop
if (Data == 's'){
myDFPlayer.stop();
Serial.println("Music Stopped!");
}
//Pauza/Start
if (Data == 'p'){
pausa = !pausa;
if (pausa == 0){
Serial.println("Continue...");
myDFPlayer.start();
}
if (pausa == 1){
Serial.println("Music Paused!");
myDFPlayer.pause();
}
}
//Vol. up
if (Data == '+'){
myDFPlayer.volumeUp();
Serial.print("Current volume:");
Serial.println(myDFPlayer.readVolume());
}
//Vol. down
if (Data == '-'){
myDFPlayer.volumeDown();
Serial.print("Current Volume:");
Serial.println(myDFPlayer.readVolume());
}
//Next
if (Data == '>'){
myDFPlayer.next();
Serial.println("next:");
Serial.print("Current track:");
Serial.println(myDFPlayer.readCurrentFileNumber()+1);
}
//Previous
if (Data == '<'){
myDFPlayer.previous();
Serial.println("Previous:");
Serial.print("Current track:");
Serial.println(myDFPlayer.readCurrentFileNumber()-1);
}
}
}
Edit. Problem rozwiązany, po zmianie kodu z "if (Bluetooth.available() > 0)" na "while (Bluetooth.available() > 0)" oraz po dodaniu w nim na samym początku "Bluetooth.listen()" mogę sterować muzyką z poziomu HC05