Problema backlight LCD2004-I2C con DFPlayer

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);
                  }
   
}

Has probado el DFPlayer? Funciona?

SI. lo probe solo y reproduce bien. hace un rato probe cargar un ejemplo de manejo del dfplayer por puerto serie y tambien anda bien. el problema esta cuando utilizo las librerias del LCD I2C que crea algun conflicto.
Pasa que quieria usar I2C en el display por el tema de la cantidad de pines disponibles en el arduino uno

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.