Hola todos y perdón pero tengo un problema con un pequeño proyecto que estoy realizando y por as vuelta que le doy no encuentro solucion.
Con un Arduino UNO estoy controlando un display LCD2004-i2c, un teclado matricial 3 columnas y 4 filas y un reproductor MP3 DFPlayer.
Al Inicializar, muestro un mensaje, luego quedo esperando el pulsado de una tecla, al detectar el pulsado, muestra la tecla en pantalla y luego de tres segundos deberia enviar la orden para reproducir el tema al dfplayer y por ultimo mostrar mensaje que el tema se esta reproduciendo.
El problema es que al pulsar la tecla, visualizo la misma en pantalla, pero al momento de enviar la orden al dfplayer, el backlight se apaga y vuelve al menu anterior del "IF" donde pedia que se pulse una tecla. Nunca recibe la orden el DFPlayer ni muestra que el tema se esta ejecutando.
Ya hace un par de dias que vengo renegando y lo unico que se me ocurre es que sea un problema de incompatibilidad entre librerias que estoy usando.
a continuacion dejo el codigo del programa.
Por las dudas probe el DFPlayer en forma independiente mandando a masa ADKEY_1 y trabaja bien. de paso los temas que tengo cargados en la microSD estan numerados 0001.mp3, 0002.mp3 ...........
// 29-09-2022 --->> Teclado 4x3 + Display I2C + DFPlayer
//=======================================================
// Teclado Matricial 3c-4f y escritura en display lcd i2c 20x4 --> OK
// falla dfplayer - me apaga el display
//
// Descripcion de conexiones:
//===========================
// Teclado matricial. Pines 3 columnas (pines d5-d6-d7) y 4 filas (d0-d1-d2-d3)
//
// Display LCD2004 I2C (Pines +5v - gnd - a4 - a5)
//
// DFPlayer (TX-d10 y RX-d11)
//
//
#include <Wire.h>
#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
#include <DFRobotDFPlayerMini.h>
//defino filas y columnas
const byte ROWS = 4;
const byte COLS = 3;
char hexaKeys[ROWS][COLS] = {
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
// pines a utilizar
byte rowPins[ROWS] = {3, 2, 1, 0};
byte colPins[COLS] = {7, 6, 5};
Keypad myKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
//Crear el objeto lcd dirección 0x3F y 16 columnas x 4 filas
LiquidCrystal_I2C lcd(0x3F,20,4); //
// Use pins 10 and 11 to communicate with DFPlayer Mini
SoftwareSerial softwareSerial(11, 10); // RX,TX
// Create the Player object
DFRobotDFPlayerMini myDFPlayer;
void setup() {
lcd.init(); // Inicializar el LCD
lcd.backlight(); // Encender la luz de fondo.
}
void loop() {
lcd.setCursor(0, 0);
lcd.print(" prueba__002 ");
lcd.setCursor(0, 1);
lcd.print("********************");
lcd.setCursor(0, 2);
lcd.print("====================");
lcd.setCursor(0, 3);
lcd.print("Pulse un Nro(0 al 9)");
// detecto tecla pulsada
char key = myKeypad.getKey(); // Detecto si se pulso una tecla
if (key != NO_KEY){ // Tecla pulsada !!!!!
int Tecla = String(key).toInt(); // convierto string a entero
lcd.setCursor(0, 3);
lcd.print("Opcion Ingresada: ");
lcd.setCursor(18,3);
lcd.print(key);
delay (3000);
myDFPlayer.play(Tecla); // Reproduzco tecla pulsada
lcd.setCursor(0, 2);
lcd.print(" reproduciendo ");
lcd.setCursor(0, 3);
lcd.print(" cancion ");
delay (3000);
}
}