Nixwisser braucht Hilfe! DFPlayer/CYD HaltestellenAnzeige-Ansage MoBa

WIE weit bist mit dem Aufbau, nehme aber Display für die TFT_eSPI ;)

Eigentlich könnte man das auch für Arduino GFX Bauen, habe ja alles was das Display betrifft,
eigentlich alles nur nicht Adafruit :rofl:

Auf den Serial-Eingang?
Oder Temp Humi..?
Hier

Mitte der Woche habe ein Player für paar Tage, mall schauen was wird von

Da ist es angeschlossen.
GPIO21
GPIO22
GND

Nein
RX -> GPIO 22
TX -> GPIO 35

Nur -1

Also jetzt das mall:

#include "DFRobotDFPlayerMini.h"//https://github.com/DFRobot/DFRobotDFPlayerMini
#define FPSerial Serial2
DFRobotDFPlayerMini myDFPlayer;

void setup() {
  Serial.begin(115200);
  FPSerial.begin(9600, SERIAL_8N1, /*rx =*/35, /*tx =*/22);
  myDFPlayer.begin(FPSerial, /*isACK = */true, /*doReset = */true);
  myDFPlayer.setTimeOut(500);

}

void loop() {
  int  ansage = myDFPlayer.readCurrentFileNumber();
  Serial.println(ansage);
  delay (1000);
}

Das wird nix!
Tausche die Pins.
35 ist nicht als TX / OUTPUT zu nutzen, dass ist ein NUR INPUT.
Ich würde die 27 nehmen.

Exakt das gleiche.

Dazu brauche ich erst das zweite Kabel. Das ist noch unterwegs.
Oder ich bastel mir was. :D

Stimmt

wurde nicht machen ;)
ok also zurück umstecken, habe mall abfrage gemacht ob der Player Startet

#define AA_FONT_SMALL "/fonts/NSBold15"
#define AA_FONT_MIDDLE "/fonts/NotoSans-Bold-20"  //
#define AA_FONT_LARGE "/fonts/Lato-Black-26"      //
#include <SPI.h>
#include <TFT_eSPI.h>  // https://github.com/Bodmer/TFT_eSPI
TFT_eSPI tft = TFT_eSPI();

#include "DFRobotDFPlayerMini.h"  //https://github.com/DFRobot/DFRobotDFPlayerMini
#define FPSerial Serial2
DFRobotDFPlayerMini myDFPlayer;

#include <FS.h>
#include <LittleFS.h>
int ansage;
bool anzeigen = 0;
String a, b, c, d, e = "";
uint32_t Altzeit;
uint8_t Intervall = 50;  // Timing für DF Playerabfrage alle 50 ms Abfrage
int ansageAlt;           // Alten Wert des Tittels merken
void setup() {
  Serial.begin(115200);


  LittleFS.begin();
  tft.begin();
  tft.setRotation(1);
  tft.fillScreen(TFT_WHITE);
  //Vodergrund Zerichnen, in der loop darf nicht fillScreen() genutzt werden!!!
  tft.setCursor(3, 2);  // x, y
  tft.loadFont(AA_FONT_MIDDLE, LittleFS);
  tft.setTextColor(TFT_BLACK, TFT_WHITE);
  tft.print("RE14 Der Dorstener");
  tft.unloadFont();
  tft.loadFont(AA_FONT_SMALL);
  tft.setCursor(8, 18);
  tft.print("Essen-Steele - Dorsten");
  tft.unloadFont();

  tft.fillRect(0, 32, 320, 28, TFT_NAVY);  //x, y, Weite, Höhe
  tft.fillRect(0, 211, 320, 29, TFT_NAVY);
  tft.drawLine(50, 59, 50, 180, TFT_NAVY);  // x, y, Pos x, Länge
  tft.drawLine(51, 59, 51, 180, TFT_NAVY);
  tft.drawLine(50, 185, 50, 188, TFT_NAVY);
  tft.drawLine(51, 185, 51, 188, TFT_NAVY);
  tft.drawLine(50, 191, 50, 194, TFT_NAVY);
  tft.drawLine(51, 191, 51, 194, TFT_NAVY);
  tft.drawLine(50, 197, 50, 200, TFT_NAVY);
  tft.drawLine(51, 197, 51, 200, TFT_NAVY);
  tft.drawLine(50, 203, 50, 206, TFT_NAVY);
  tft.drawLine(51, 203, 51, 206, TFT_NAVY);
  tft.fillCircle(50, 225, 3, TFT_WHITE);  // x,y, Radius
  tft.drawCircle(50, 225, 8, TFT_WHITE);
  tft.drawCircle(50, 225, 8, TFT_WHITE);
  tft.fillCircle(50, 75, 10, TFT_NAVY);  // x,y, Radius
  tft.fillCircle(50, 100, 7, TFT_NAVY);
  tft.fillCircle(50, 125, 7, TFT_NAVY);
  tft.fillCircle(50, 150, 7, TFT_NAVY);
  tft.fillCircle(50, 175, 7, TFT_NAVY);
  tft.setTextColor(TFT_WHITE, TFT_NAVY);
  tft.loadFont(AA_FONT_LARGE);
  tft.setCursor(20, 35);
  tft.print("Nächster Halt:");
  tft.setCursor(80, 213);
  tft.print("Dorsten");

  FPSerial.begin(9600, SERIAL_8N1, /*rx =*/21, /*tx =*/22);
 if (!myDFPlayer.begin(FPSerial, /*isACK = */true, /*doReset = */true)) {  //Use serial to communicate with mp3.
    Serial.println(F("Player antwortet nicht :"));
  
    while(true){
      delay(0); // Code to compatible with ESP8266 watch dog.
    }
  }
 
  myDFPlayer.setTimeOut(500);
}

void loop() {
  //if (millis() - Altzeit > Intervall) {
  ansage = myDFPlayer.readCurrentFileNumber();
  // if (ansage != ansageAlt) {
  //ansageAlt = ansage;
  Serial.println(ansage);
  switch (ansage) {
    case 1:
      a = "Essen-Steele";
      b = "Essen Hbf";
      c = "Essen-Borbeck";
      d = "Bottrop Hbf";
      e = "Gladbeck West";
      break;
    case 2:
      a = "Essen Hbf";
      b = "Essen-Borbeck";
      c = "Bottrop Hbf";
      d = "Gladbeck West";
      e = "Gladbeck-Zweckel";
      break;
    case 3:
      a = "Essen-Borbeck";
      b = "Bottrop Hbf";
      c = "Gladbeck West";
      d = "Gladbeck-Zweckel";
      e = "Feldhausen";
      break;
    case 4:
      a = "Bottrop Hbf";
      b = "Gladbeck West";
      c = "Gladbeck-Zweckel";
      d = "Feldhausen";
      e = "Dorsten";
      break;
    case 5:
      a = "Gladbeck West";
      b = "Gladbeck-Zweckel";
      c = "Feldhausen";
      d = "Dorsten";
      e = " ";
      break;
    case 6:
      a = "Gladbeck-Zweckel";
      b = "Feldhausen";
      c = "Dorsten";
      d = " ";
      e = " ";
      break;
    case 7:
      a = "Feldhausen";
      b = "Dorsten (Endstelle)";
      c = " ";
      d = " ";
      e = " ";
      break;
    case 8:
      a = "Dorsten (Endstelle)";
      b = " ";
      c = " ";
      d = " ";
      e = " ";
      break;
    // nechste case eintragen mit dazugehörigen haltestellen

    default:
      a = " ";
      b = " ";
      c = " ";
      d = " ";
      e = " ";
      break;
  }

  //Ale Angaben für  String kommen vom Casse
  tft.loadFont(AA_FONT_LARGE);
  tft.setTextColor(TFT_RED, TFT_WHITE);
  tft.setTextDatum(TL_DATUM);                               //Text Ausrichtung feststellen hier links Bündig
  tft.setTextPadding(240);                                  //Padden Sie den Text nach drawString() auf volle Breite, um den alten Text zu überschreiben.
  tft.drawString(/*String*/ a, /*x Pos*/ 80, /*yPos*/ 64);  // String, XPos, Y
  tft.unloadFont();
  tft.unloadFont();
  tft.setTextColor(TFT_BLACK, TFT_WHITE);
  tft.loadFont(AA_FONT_MIDDLE);
  tft.drawString(b, 80, 90);  // String, XPos, Y pos
  tft.drawString(c, 80, 115);
  tft.drawString(d, 80, 140);
  tft.drawString(e, 80, 165);
  tft.unloadFont();
  delay(1000);

}
// }
//}

"Player antwortet nicht:"

Pst: Wieder doof gefragt: Das ist nicht der Serial-Eingang mit RX/TX (GPIO01/03)

(!myDFPlayer.begin(FPSerial, /*isACK = */true, /*doReset = */true)) {  //**Use serial to communicate with mp3**.

ok Jetz nochmal

void setup() {
  // put your setup code here, to run once:
#include "DFRobotDFPlayerMini.h"//https://github.com/DFRobot/DFRobotDFPlayerMini
#define FPSerial Serial2
  DFRobotDFPlayerMini myDFPlayer;

  void setup() {
    Serial.begin(115200);
    FPSerial.begin(9600, SERIAL_8N1, /*rx =*/21, /*tx =*/22);
   if (!myDFPlayer.begin(FPSerial, /*isACK = */true, /*doReset = */true)) {  //Use serial to communicate with mp3.
    Serial.println(F("Player antwortet nicht :"));
    
    while (true) {
      delay(0); // Code to compatible with ESP8266 watch dog.
    }
  }
    myDFPlayer.setTimeOut(500);

  }

  void loop() {
    int  ansage = myDFPlayer.readCurrentFileNumber();
    Serial.println(ansage);
    delay (1000);
  }
}

void loop() {
  // put your main code here, to run repeatedly:

}

Du hast das 2x setup & loop drin.
Mach mal nach FPSerial.begin() ein Delay von 2000 rein.

exit status 1

Compilation error: a function-definition is not allowed here before '{' token

Habe gerade auch gemerkt

 
  // put your setup code here, to run once:
#include "DFRobotDFPlayerMini.h"//https://github.com/DFRobot/DFRobotDFPlayerMini
#define FPSerial Serial2
  DFRobotDFPlayerMini myDFPlayer;

  void setup() {
    Serial.begin(115200);
    FPSerial.begin(9600, SERIAL_8N1, /*rx =*/21, /*tx =*/22);
   if (!myDFPlayer.begin(FPSerial, /*isACK = */true, /*doReset = */true)) {  //Use serial to communicate with mp3.
    Serial.println(F("Player antwortet nicht :"));
    
    while (true) {
      delay(0); // Code to compatible with ESP8266 watch dog.
    }
  }
    myDFPlayer.setTimeOut(500);

  }

  void loop() {
    int  ansage = myDFPlayer.readCurrentFileNumber();
    Serial.println(ansage);
    delay (1000);
  }
}
 

Hier funktioniert die abfrage wieder.
Es werden wieder die Filenummern angezeigt.

Ich hab das oben schon mal geschrieben, 21 ist der Backlight-Pin

Aus dem Usersetup:

 #define TFT_BL   21            // LED back-light control pin

Wenn der Display da dran hängt, stört der.
PS: Du hast 2x das define im userfile.