Probleme mit Waveshare 2.9inch ePaper Display

@fony
d.h. dieses Display wird nie vernünftig mit einem esp8266 zu betreiben sein, korrekt ?

@HotSystems
Deine Displays laufen doch mit esp8266 mcu's korrekt ? Was für welche sind das ? Hast Du evtl. einen Link ?

So wie ich weiß @HotSystems nutzt keine vom diesem Display.

Ist nur 75/25 Vermutung, tue den so testen wie geschrieben habe, und wen der Funktioniert schauen wir weiter.
Es gibt Möglichkeiten den zum laufen bringen am ESP, aber erst mall teste Bitte.

Gib mall bitte Ling wo her hast den.

@fony hat dir das schon geschrieben.
An den ESP8266 betreibe ich nur vereinzelt zur Kontrolle Displays. Da sind Oled oder TFT am laufen. Aber eben nur an 3 ESP8266. Alle ESP8266 sind per WLan untereinander verbunden und alle mit einem Webserver bestückt, um per Browser alles einzusehen.
Hier ein Beispiel meiner verwendeten TFTs. Alle funktionieren am ESP8266 odrr ESP32. Mit Levelshifter auch an 5 Volt Systemen wie Uno.

Man kann ePaperdisplays am ESP8266 vernünftig betreiben. Ich habe zumindest eines (4,2") in Betrieb. Verwendet habe ich die GxEPD2 Bibliothek GitHub - ZinggJM/GxEPD2: Arduino Display Library for SPI E-Paper Displays

Das stimmt, nur hast dir das Display angeguckt?
Alle Was ich gesehen habe sind ohne Level Schifter, direkt an ESP verbunden.

Ja .. ich habe ja nur allgemein gesagt, dass man ePaperdisplays betreiben kann. Warum das mit dem gezeigten Probleme geben könnte, ist in dem verlinkten Artikel beschrieben. Und auch , was man machen kann, das es funktioniert....

@fony

Wenn ich das richtig interpretiere, waren die Displays in V1 nur 5V tauglich und ab V2 3.3V und 5V tauglich... Ne Dokumentation war ja nicht dabei ...

@HotSystems
das habe ich falsch verstanden ... Ich hatte mit "ich habe 8 Stück hier im Smarthome im Einsatz" auf das Display bezogen ... Missverständnis meinerseits, sorry.

@Kai-R
Danke für den Link, das schaue ich mir an :slight_smile:

Also sehe kein Problem den an 5V System zum testen anklemmen.

@HotSystems
Du hattest geschrieben, dass die GPIOs 0 und 2 beim booten besonders zu beachten sind.
Beide in Kombination oder sowohl als auch ?

@fony
habe VCC an 5V angeschlossen und mit Spannung versorgt (USB Netzteil). Das Display hat sich nicht gerührt ...

In Deinem Beitrag ist ein "Nackter" RAW Connector, die gibt es auch bei Waveshare.
Ist aber Egal.

Das musst Du mir nicht erklären... das weiß ich :wink:

Damit funktioniert es aber. Man kann das Flachbandkabel von dem in #17 gezeigten Display lösen und an den RAW-Converter klemmen. Dann kann das Display damit auch verwendet werden.

Das weiß ich, wollte nur Anmerken den unterschied zw. den beiden.
Normaler weise machen die Dinger keine Probleme.

Natürlich, nur der TO hat so was nicht.
Das mit den 3,3V / 5V Kompatibel schreiben die Verkäufer sehr oft, nur später stellt sich heraus dass das stimmt nicht.
Erfahrung von TFT Displays, und gerade bei Amazon Hauptsache verkauft

Das gilt für jeden einzelnen GPIO.

Moin,

ich habe ein positives Ergebnis zu verkünden ... :grin:

Ich habe wie weiter oben nochmal geschaut, welche Verdrahtungsvarianten ich hatte und eine gefunden, die funktioniert ...

// BUSY -> D2 (GPIO4), RST -> D6 (GPIO12), DC -> D0 (GPIO16), CS -> D1 (GPIO5), CLK -> D5 (GPIO14), DIN -> D7 (GPIO13), GND -> GND, VCC -> 3.3V

#include <GxEPD.h>

// select the display class to use, only one
#include <GxGDEM029T94/GxGDEM029T94.h>    // 2.9" b/w
//#include <GxDEPG0290BS/GxDEPG0290BS.h>    // 2.9" b/w Waveshare variant, TTGO T5 V2.4.1 2.9"

#include GxEPD_BitmapExamples

// FreeFonts from Adafruit_GFX
#include <Fonts/FreeMonoBold9pt7b.h>
#include <Fonts/FreeMonoBold12pt7b.h>
#include <Fonts/FreeMonoBold18pt7b.h>
#include <Fonts/FreeMonoBold24pt7b.h>

#include <GxIO/GxIO_SPI/GxIO_SPI.h>
#include <GxIO/GxIO.h>

GxIO_Class io(SPI, /*CS=D1*/ 5, /*DC=D0*/ 16, /*RST=D6*/ 12);
GxEPD_Class display(io, /*RST=D6*/ 12, /*BUSY=D2*/ 4); 

void setup()
{
  Serial.begin(115200);
  delay(800);
  Serial.println();
  Serial.println("setup starting");

  display.init(115200); // enable diagnostic output on Serial

  drawHelloWorld();
  display.update();
  display.powerDown();

  Serial.println("setup done");
}

void loop() {
  Serial.println("loop");
  delay(5000);
};

const char HelloWorld[] = "Erstes positives Ergebnis!";

void drawHelloWorld()
{
  Serial.println("drawHelloWorld");
  display.setRotation(1);
  display.setFont(&FreeMonoBold9pt7b);
  display.setTextColor(GxEPD_BLACK);
  int16_t tbx, tby; uint16_t tbw, tbh;
  display.getTextBounds(HelloWorld, 0, 0, &tbx, &tby, &tbw, &tbh);
  // center bounding box by transposition of origin:
  uint16_t x = ((display.width() - tbw) / 2) - tbx;
  uint16_t y = ((display.height() - tbh) / 2) - tby;
  display.fillScreen(GxEPD_WHITE);
  display.setCursor(x, y);
  display.print(HelloWorld);
  Serial.println("drawHelloWorld done");
}

void drawHelloWorldForDummies()
{
  // This example function/method can be used with full buffered graphics AND/OR paged drawing graphics
  // for paged drawing it is to be used as callback function
  // it will be executed once or multiple times, as many as needed,
  // in case of full buffer it can be called directly, or as callback
  // IMPORTANT: each iteration needs to draw the same, to avoid strange effects
  // use a copy of values that might change, don't read e.g. from analog or pins in the loop!
  //Serial.println("drawHelloWorldForDummies");
  const char text[] = "Hello World!";
  // most e-papers have width < height (portrait) as native orientation, especially the small ones
  // in GxEPD rotation 0 is used for native orientation (most TFT libraries use 0 fix for portrait orientation)
  // set rotation to 1 (rotate right 90 degrees) to have enough space on small displays (landscape)
  display.setRotation(1);
  // select a suitable font in Adafruit_GFX
  display.setFont(&FreeMonoBold9pt7b);
  // on e-papers black on white is more pleasant to read
  display.setTextColor(GxEPD_BLACK);
  // Adafruit_GFX has a handy method getTextBounds() to determine the boundary box for a text for the actual font
  int16_t tbx, tby; uint16_t tbw, tbh; // boundary box window
  display.getTextBounds(text, 0, 0, &tbx, &tby, &tbw, &tbh); // it works for origin 0, 0, fortunately (negative tby!)
  // center bounding box by transposition of origin:
  uint16_t x = ((display.width() - tbw) / 2) - tbx;
  uint16_t y = ((display.height() - tbh) / 2) - tby;
  display.fillScreen(GxEPD_WHITE); // set the background to white (fill the buffer with value for white)
  display.setCursor(x, y); // set the postition to start printing text
  display.print(text); // print some text
  //Serial.println("drawHelloWorldForDummies done");
}

Dann kann ich mein Projekt ja nun weiter verfolgen.
Vielen Dank für eure mentale Unterstüzung :slight_smile:

Das sieht doch schon gut aus.
Danke für die Rückmeldung.

Schön, habe vor zwei tagen gesagt nehme 4 und 5.
@HotSystems hat dir doch geschrieben das 0 und 2 sind nicht optimal, aber du was stur bis heute :wink:

@fony
Deinen Beitrag von vor zwei Tagen habe ich mangels Wissen in dem Bereich nicht richtig gedeutet... Und bzgl. der GPIO 0 und 2 war ich a) nicht stur sondern hatte einfach keinen anderen Lösungsansatz und b) habe ich mich nicht permanent mit dem Thema beschäftigen können (Familie, Haus, Hof, ...) :wink: