Hi everyone. I am trying to control a DF Player mini with a HC-05 Bluetooth module using an APP I made to build a robot with voice and moving eyes using 8x8 led matrix. However, after some time searching on internet I end up with a two SoftwareSerial connection code.
Despite it working well at the start, after pressing again the audio button it completely loses the connection with the Bluetooth. So I am not sure why I can connect yet not disconnect the Mp3 DF player serial communication from the arduino and the APP.
Thanks.
//Librerias
#include <SoftwareSerial.h>
#include "DFRobotDFPlayerMini.h"
#include "LedControl.h" // Libreria para controlar Matriz
//Configuracion del audio/////////////////////////////////////////////
// Use pins 2 and 3 to communicate with DFPlayer Mini
static const uint8_t MP3_TX = 11; // Connects to module's RX
static const uint8_t MP3_RX = 10; // Connects to module's TX
static const uint8_t TOOTH_TX = 1; // Connects to module's RX
static const uint8_t TOOTH_RX = 0; // Connects to module's TX
SoftwareSerial Mp3Serial(MP3_RX, MP3_TX);
SoftwareSerial TOOTHSerial(TOOTH_RX, TOOTH_TX);
// Create the Player object
DFRobotDFPlayerMini player;
int estado="s";
int AUDIO=LOW;
int LED=13;
int A=1;
unsigned long start_time=millis();
unsigned long current;
/*PLANO PARA EL MONTAJE de los ojos /////////////////////////////////////////
Pines: 7 = DIN 6 =CLK 5 = CS
5V - GND
*/
LedControl lc=LedControl(7, 5, 6, 2); //Pines + 2 dado a que son 2 Pantallas
#define demora 200
byte neutro[8] = {B00111100,B01111110,B11111111,B11100111,B11100111,B11111111,B01111110,B00111100};
byte abajo[8]={B00111100,B01111110,B11111111,B10011111,B10011111,B11111111,B01111110,B00111100};
byte arriba[8]={B00111100,B01111110,B11111111,B11111001,B11111001,B11111111,B01111110,B00111100};
byte izquierda[8]={B00111100,B01100110,B11100111,B11111111,B11111111,B11111111,B01111110,B00111100};
byte derecha[8]={B00111100,B01111110,B11111111,B11111111,B11111111,B11100111,B01100110,B00111100};
byte mimir[8]={B00011000,B00111000,B01110000,B11100000,B11100000,B01110000,B00111000,B00011000};
byte linea[8]={B00011000,B00011000,B00011000,B00011000,B00011000,B00011000,B00011000,B00011000};
byte muerto[8]={B11000011,B11100111,B01111110,B00111100,B00111100,B01111110,B11100111,B11000011};
byte off[8]={B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000};
///////////////////////////////////////////////////////////////////////////////////////
void setup() {
Serial.begin (9600);
//Matriz 1
lc.shutdown(0,false); // enciende la matriz
lc.setIntensity(0,4); // establece brillo
lc.clearDisplay(0); // Se limpia la matriz
//Matriz 2
lc.shutdown(1,false); // enciende la matriz
lc.setIntensity(1,4); // establece brillo
lc.clearDisplay(1); // Se limpia la matriz
pinMode(LED,OUTPUT);
TOOTHSerial.begin (9600); //Inicia SoftwareSerial para el modulo Bluettoh
Mp3Serial.begin (9600); //Inicia SoftwareSerial para el modulo DFPlayer Mini
delay(10);
start_time=millis();
player.begin(Mp3Serial);
}
void loop() {
TOOTHSerial.listen();
if(TOOTHSerial.available()>0){ // lee el mensaje enviado desde la APP bluetooth y almacena en variable estado
estado = TOOTHSerial.read();
if (estado =='v'){
Mp3Serial.listen(); //Pone a la escucha el modulo DFPlayer Mini
int track = random(1,6);
player.volume(20);
player.play(track);
Mp3Serial.stopListening();
TOOTHSerial.listen();
}
else if (estado =='a'){
TOOTHSerial.listen();
digitalWrite(13,HIGH);
mostrar_ojo_arri ();
delay(demora);
}
else if (estado =='r'){
TOOTHSerial.listen();
digitalWrite(13,LOW);
mostrar_ojo_abajo ();
delay(demora);
}
else if (estado =='i'){
TOOTHSerial.listen();
digitalWrite(13,LOW);
mostrar_ojo_iz ();
delay(demora);
}
else if (estado =='d'){
TOOTHSerial.listen();
digitalWrite(13,LOW);
mostrar_ojo_der ();
delay(demora);
}
else if (estado =='t'){
TOOTHSerial.listen();
a_mimir();
delay(demora);
}
else if (estado =='s'){
TOOTHSerial.listen();
mostrar_ojo_centro ();
delay(demora);
}
else if(estado =='h'){
serio();
delay(demora);
}
else if (estado =='l'){
TOOTHSerial.listen();
KO ();
delay(demora);
}
else{
Mp3Serial.listen();
player.stop();
TOOTHSerial.listen();
}
}
}
//FUNCIONES PARA LOS OJOS////////////////////////////////////////////////////////////////////////////////////
void mostrar_ojo_centro() {
for (int i = 0; i < 8; i++) {
lc.setRow(0,i,neutro[i]);//Matriz 1
lc.setRow(1,i,neutro[i]);//Matriz 2
}
}
void mostrar_ojo_abajo() {
for (int i = 0; i < 8; i++) {
lc.setRow(0,i,abajo[i]);//Matriz 1
lc.setRow(1,i,abajo[i]);//Matriz 2
}
}
void mostrar_ojo_arri() {
for (int i = 0; i < 8; i++) {
lc.setRow(0,i,arriba[i]);//Matriz 1
lc.setRow(1,i,arriba[i]);//Matriz 2
}
}
void mostrar_ojo_iz() {
for (int i = 0; i < 8; i++) {
lc.setRow(0,i,izquierda[i]);//Matriz 1
lc.setRow(1,i,izquierda[i]);//Matriz 2
}
}
void mostrar_ojo_der() {
for (int i = 0; i < 8; i++) {
lc.setRow(0,i,derecha[i]);//Matriz 1
lc.setRow(1,i,derecha[i]);//Matriz 2
}
}
void a_mimir() {
for (int i = 0; i < 8; i++) {
lc.setRow(0,i,mimir[i]);//Matriz 1
lc.setRow(1,i,mimir[i]);//Matriz 2
}
}
void serio() {
for (int i = 0; i < 8; i++) {
lc.setRow(0,i,linea[i]);//Matriz 1
lc.setRow(1,i,linea[i]);//Matriz 2
}
}
void KO() {
for (int i = 0; i < 8; i++) {
lc.setRow(0,i,muerto[i]);//Matriz 1
lc.setRow(1,i,muerto[i]);//Matriz 2
}
}
void parpadear() {
for (int i = 0; i < 8; i++) {
lc.setRow(0,i,off[i]);//Matriz 1
lc.setRow(1,i,off[i]);//Matriz 2
}
}