Moment, das ist es
Also muss der 35 und 22 dran
TX vom Player muss auf 35
TX vom Player muss auf 22
@zyxelu das Kabel vom Display ist doch gesteckt auf dem DFPlayer oder ?
Korrigier mal... ;)
Das kleine, mitgelieferte?
Ja, im moment provisorisch.
Inkl. den 1kOhm auf jedem.
Also mach das mall so wie geschrieben
na ja war falsch
TX auf 35
RX auf 22
Keine ahnung warum, aber das Display schaltet sich dann ab.
Hast du auch die 35 Ader dran?
Ich mach Ende fürHeute
Natürlich.
Von 21 auf 35 = Display aus
Kein Ding!
Vielen Dank!
Wünsche dir einen schönen Abend.
LG
Machmall bitte ein Foto vom Kabel wen der eingesteckt ist und wo gecht welscher Draht.
ZB. Roter zum usw.
Danke
Lüppt schon ;-)
Ich danke DIR!
Mach ma Feierabend.
Das ganze eben gelöst.
Auflösung etc. sende ich alles nach.
Spätestens morgen gibts hier das fertige.
Meine Frau wartet, Serie gucken. Bloss kein Dschungel.
Ja so ist das numal....
muss Papa (Opa) erst kommen....
so lüppt
#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>
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, ansage; // Alten Wert des Tittels merken
void setup() {
Serial.begin(115200);
myDFPlayer.setTimeOut(500); // braucht es eigentlich nicht weil in DFRobotDFPlayerMini.h Zeile 71 festgelegt.
// myDFPlayer.volume(10); // würde ich so machen man kann ja immer noch mehr lautstärke mit den Tastern erreichen
SPI.begin(); // Und vielleicht der Hardware auch mitteilen das SPI benötigt wird.
LittleFS.begin();
tft.begin();
FPSerial.begin(9600, SERIAL_8N1, /*rx =*/27, /*tx =*/22); // Und mal nach der Hardware schauen. Ups dier Pin 27 ist ja nicht belegt
// Und wie passend auch noch gleich neben den schon vorhandenen Steckkontakt.
myDFPlayer.begin(FPSerial, /*isACK = */ true, /*doReset = */ true);
delay(1000);
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");
}
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();
}
}
Aber was hab ich nicht alles: bin zu dumm um Varis auseinander zu halten weiß beim besten willen nicht wie Hardware aussieht.
Ach ja meine Hardware ist ja auch nur fake....
dabei: FPSerial.begin(9600, sind ja in diesem Fall 9600 Bit / Sec.
das macht dann bei 30 Byte die ja ausgetauscht werden rein rechnerrisch 8,33 mSec / 10 Byte. so kommt das dann wohl auch hin das MEIN FAKE CHip soviel Zeit verbraucht ![]()
Wie groß war nochmal der Buffer in einem ESP32? Beim Mega2560 sind es 32 Byte
Und dann hämmer ich mit Vollgas den Buffer zu Ja klarr der schmeißt raus. aber 2 byte verschiben sich oder? Und dann sollte man sich auch nicht wundern wenn es zu nicht gewollten Ausgaben kommt. siehe post #124 achte auf ausschnitt
Es wird schon Tittel 4 gespielt aber noch weil alles nicht ordentlich ...
ausschnitt
sending:7E FF 6 4C 1 0 0 FE AE EF
received:7E FF 6 41 0 0 0 FE BA EF
received:7E FF 6 4C 0 0 4 FE AB EF
Ups die ersten Fehler werden erkennbar.
sending:7E FF 6 4C 1 0 0 FE AE EF
received:7E FF 6 41 0 0 0 FE BA EF
sending:7E FF 6 4C 1 0 0 FE AE EF
received:7E FF 6 4C 0 0 4 FE AB EF
received:7E FF 6 41 0 0 0 FE BA EF
received:7E FF 6 4C 0 0 4 FE AB EF
sending:7E FF 6 4C 1 0 0 FE AE EF
received:7E FF 6 41 0 0 0 FE BA EF
received:7E FF 6 4C 0 0 4 FE AB EF
sending:7E FF 6 4C 1 0 0 FE AE EF
received:7E FF 6 41 0 0 0 FE BA EF
Ja ich bin einfach zu Dumm für diese Welt. Zu meiner Selbstständigkeit hatte ich nur 13 CNC Maschinen die ich alle Programieren konnte . Ne, aus Kostengründen habe ich die meißt auch noch selbst Repariert. In anderen Firmen waren die Maschinen so toll dass ich auch mitfahren konnte. Und der Adrenalin Spiegel sag ich Dir. Eine Steilkurve mit einer Chessna oder mit einer Kawa GPZ1100RX mit 240 über die Bahn kommen da nicht mit.
Ach, ich bin einfach zu dumm.......
Lieben Gruß... Martin ![]()
Ok Danke du nutz ja 27,und 22.
Ich hab den Fehler gemacht das es wurde anfangs 21,22 genommen, jedoch auf 21 hängt die Hintergrundbeleuchtung deshalb auf 35 umgepackt.
Die 21 hat dauerhaft high dann kann es nicht das nicht funktionieren.
Laut Schaltplan sollte das Display auch SPI Buchse haben, @zyxelu ist das der Gleicher?
2.8inch_ESP32-32_Display_Schematic.pdf (159.2 KB)
Na ja da gibtbes hier mehrere inklusive mich
![]()
Wenn der TO hat die alte Ausführung ohne der SPI Buchse, dan kann man ja auch 22 und 27 nehmen.
Das jedoch wollte ich vermeiden den auf der Buche ist auch 3.3V, die auf falchem Player Pin kann magischen Rauch auslösen.
Erzähl mal, wo Du da einen Fehler siehst.
Hier
received:7E FF 6 4C 0 0 4 FE AB EF
Über der Schrift
Ups......
Das ist doch aber richtig!
Die Antwort ist richtig, der Inhalt ist richtig, das CRC stimmt.
Die Frage ist ob die erste oder zweite Antwort.
Habe das DB nicht zu Hand und am Telefon suchen ist nicht so optimal.
