wo gibt es noch Libraries für EPD

#7370371
Lesenswert?

Hallo

ich wollte ein E-paper (2,13" von Waveshare) an einem ESP32 betreiben. Dazu habe ich in der Arduino-IDE in Bibliotheksverwaltung alle möglichen Sachen installiert, die irgendwie mit EPD zusammenhängen (GxEPD, GxEPD2, EPD, Adafruit-EPD usw).

Hat aber nichts geholfen: Wenn ich so einen Beispielcode wie Hello World kompiliere, bricht es ab mit dem Hinweis, das "display...." nicht gefunden wurde. Also fehlt wohl irgendeine library.

Weiß vielleicht jemand, wo ich die finden kann?

VG

knut735

#7370468
Lesenswert?

Hier ist das Programm:

1
// GxEPD_Hello World Example by Jean-Marc Zingg
2
// Created by Jean-Marc Zingg based on demo code from Good Display,
3
// available on http://www.e-paper-display.com/download_list/downloadcategoryid=34&isMode=false.html
4
//

Und das ist die Fehlermeldung beim Versuch, es zu kompilieren:

1
C:\Users\mails\AppData\Local\Temp\arduino_modified_sketch_243817\GxEPD2_HelloWorld.ino: In function 'void setup()':
2
GxEPD2_HelloWorld:27:3: error: 'display' was not declared in this scope
3
   display.init(115200);
4
   ^~~~~~~
5
C:\Users\mails\AppData\Local\Temp\arduino_modified_sketch_243817\GxEPD2_HelloWorld.ino:27:3: note: suggested alternative: 'delay'
6
   display.init(115200);
7
   ^~~~~~~
8
   delay
9
C:\Users\mails\AppData\Local\Temp\arduino_modified_sketch_243817\GxEPD2_HelloWorld.ino: In function 'void helloWorld()':
10
GxEPD2_HelloWorld:36:3: error: 'display' was not declared in this scope
11
   display.setRotation(1);
12
   ^~~~~~~
13
C:\Users\mails\AppData\Local\Temp\arduino_modified_sketch_243817\GxEPD2_HelloWorld.ino:36:3: note: suggested alternative: 'delay'
14
   display.setRotation(1);
15
   ^~~~~~~
16
   delay
17
exit status 1
18
'display' was not declared in this scope

VG

knut735

#7370471
Lesenswert?

Oliver R. schrieb:

Ich befürchte, da fehlt eher der richtige Anschluss oder der richtige Eintrag der Pins.

Die Pins sind gar nicht angeschlossen. Mir kam es zunächst darauf an, ob das Programm überhaupt für einen ESP32 kompiliert wird oder ob ich einen Arduino Uno nehmen muß.

Mir ist nicht bewußt, daß beim Kompilieren schon irgendwelche Verbindungen zur Hardware, so vollständig oder unvollständig sie sein mag, bestehen.

VG

#7370506
Lesenswert?

Egon M. schrieb:

Das habe ich getan.

Das würde bedeuten, dass du die Kommentarzeilen vor einer der Display-Definitionen in der GxEPD2_display_selection.h entfernt hast. In der Zeile wird "display" definiert. d.H. danach taucht die Fehlermeldung "'display' was not declared in this scope" nicht mehr auf.

Vorsicht, muss in der ESP32-Sektion der Datei sein, nicht in der ESP8266-, STM32 oder AVR-Sektion.

#7370530
Lesenswert?

Hier ist noch mal die zuletzt benutzte Version des Hallo-World-Programmes samt Fehlermeldung. Die includierten Dateien sind alle noch drin. Selbst da, wo zwischen old style und new style unterschieden wird, habe ich beide drin gelassen. Es sind also zuviel und nicht zu wenige ...h - Dateien includiert (gibt sicher kein lauffähiges Programm). Aber:In keiner der zugehörigen Dateien scheint "display" enthalten zu sein. In die ...h und ...cpp - Ddateien habe ich noch nicht hineingeschaut.

Nebenbei: weshalb dauert das Kompilieren 10-15 Minuten?

Hier das kompltte Programm:

1
// GxEPD2_HelloWorld.ino by Jean-Marc Zingg
2

3
// see GxEPD2_wiring_examples.h for wiring suggestions and examples
4
// if you use a different wiring, you need to adapt the constructor parameters!
5

6
// uncomment next line to use class GFX of library GFX_Root instead of Adafruit_GFX
7
//#include <GFX.h>
8

9
#include <GxEPD2_BW.h>
10
#include <GxEPD2_3C.h>
11
#include <Fonts/FreeMonoBold9pt7b.h>
12

13
// select the display class and display driver class in the following file (new style):
14
#include "GxEPD2_display_selection_new_style.h"
15

16
// or select the display constructor line in one of the following files (old style):
17
#include "GxEPD2_display_selection.h"
18
#include "GxEPD2_display_selection_added.h"
19

20
// alternately you can copy the constructor from GxEPD2_display_selection.h or GxEPD2_display_selection_added.h to here
21
// e.g. for Wemos D1 mini:
22
//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0154D67
23

24
void setup()
25
{
26
  display.init(115200);
27
  helloWorld();
28
  display.hibernate();
29
}
30

31
const char HelloWorld[] = "Hello World!";
32

33
void helloWorld()
34
{
35
  display.setRotation(1);          <<<<<<<< diese Zeile wird beanstandet
36
                                   <<< aber display.init weiter oben nicht                                                                         
37

38
  display.setFont(&FreeMonoBold9pt7b);
39
  display.setTextColor(GxEPD_BLACK);
40
  int16_t tbx, tby; uint16_t tbw, tbh;
41
  display.getTextBounds(HelloWorld, 0, 0, &tbx, &tby, &tbw, &tbh);
42
  // center the bounding box by transposition of the origin:
43
  uint16_t x = ((display.width() - tbw) / 2) - tbx;
44
  uint16_t y = ((display.height() - tbh) / 2) - tby;
45
  display.setFullWindow();
46
  display.firstPage();
47
  do
48
  {
49
    display.fillScreen(GxEPD_WHITE);
50
    display.setCursor(x, y);
51
    display.print(HelloWorld);
52
  }
53
  while (display.nextPage());
54
}
55

56
void loop() {};

Und hier die Fehlermeldung:

1
K:\Dat-KPC2\Arduino-Prgm\libraries\GxEPD2\examples\GxEPD2_HelloWorld\GxEPD2_HelloWorld.ino: In function 'void setup()':
2
GxEPD2_HelloWorld:26:3: error: 'display' was not declared in this scope
3
   display.init(115200);
4
   ^~~~~~~
5
K:\Dat-KPC2\Arduino-Prgm\libraries\GxEPD2\examples\GxEPD2_HelloWorld\GxEPD2_HelloWorld.ino:26:3: note: suggested alternative: 'delay'
6
   display.init(115200);
7
   ^~~~~~~
8
   delay
9
K:\Dat-KPC2\Arduino-Prgm\libraries\GxEPD2\examples\GxEPD2_HelloWorld\GxEPD2_HelloWorld.ino: In function 'void helloWorld()':
10
GxEPD2_HelloWorld:35:3: error: 'display' was not declared in this scope
11
   display.setRotation(1);
12
   ^~~~~~~
13
K:\Dat-KPC2\Arduino-Prgm\libraries\GxEPD2\examples\GxEPD2_HelloWorld\GxEPD2_HelloWorld.ino:35:3: note: suggested alternative: 'delay'
14
   display.setRotation(1);
15
   ^~~~~~~
16
   delay
17
exit status 1
18
'display' was not declared in this scope
#7370765
Lesenswert?

Egon M. schrieb:

Nebenbei: weshalb dauert das Kompilieren 10-15 Minuten?

Virenscanner abschalten oder eine Ausnahme für die Arduino-Directories einrichten.

Egon M. schrieb:

Hier das kompltte Programm:

Das ist nicht komplett. Da gehören die Dateien dazu, in denen du auswählst, was für ein Display du hast, und damit die "display"-Variable deklarierst. Also Eine der "_display_selection.h"- Dateien.

#7370789
Lesenswert?

Egon M. schrieb:

Mir ist nicht bewußt, daß beim Kompilieren schon irgendwelche Verbindungen zur Hardware, so vollständig oder unvollständig sie sein mag, bestehen.

so funktioniert aber cpp, nicht die Verbindung zur Hardware aber die Deklaration der FUNKTION

Egon M. schrieb:

'display' was not declared in this scope

kannst du deswegen nicht nutzen weil du:

Egon M. schrieb:

//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/CS=D8/ SS, /DC=D3/ 0, /RST=D4/ 2, /BUSY=D2/ 4)); // GDEH0154D67

die Funktion "display" 3te Zeile -> display(G.... ja immer noch auskommentiert hast

Zur Hardware geht es erst wenn in der Deklaration die Pins richtig gesetzt werden.

#7370902
Lesenswert?

Joachim B. schrieb:

Egon M. schrieb:

//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/CS=D8/ SS, /DC=D3/ 0, /RST=D4/ 2, /BUSY=D2/ 4)); // GDEH0154D67

die Funktion "display" 3te Zeile -> display(G.... ja immer noch auskommentiert hast

Ja, nachdem ich die Auskommentierung entfernt habe,lief das Kompilieren bis zum Ende durch!

Nach diesem hilfreichen Hinweis werde ich mich nun darum kümmern, an welche Pins des ESP-WROOM 32 das EPD angeschlossen werden muß und wie ich die passende Sequenz für mein 2.13"-EPD im Programm unterbringe. Vielleicht funktioniert es dann.

Gruß

knut735

#7370926
Lesenswert?

Aus dem obigen Sourcecode ist auch folgendes zu lesen:

1
// select the display class and display driver class in the following file (new style):
2
#include "GxEPD2_display_selection_new_style.h"

Anscheinend soll der Benutzer wohl in der include Datei "GxEPD2_display_selection_new_style.h" das richtige Display auswählen. Die 3te Zeile ist halt eine Alternative dazu, muß jedoch an das Display angepasst werden. Es gibt halt sehr viele verschiedene Displays.

Gruß Dirk

#7371263
Lesenswert?

Joachim L. schrieb:

Hier ist diese Zeile von meinem WetterESP32 mit 1,54 Zoll Display. Und Fotos vom Anschluss.

GxEPD2_3C<GxEPD2_154c, GxEPD2_154c::HEIGHT> display(GxEPD2_154c(/CS=5/ SS, /DC=/ 17, /RST=/ 16, /BUSY=/ 4));

Sieht sehr schön aus! Ich möchte es für Temperaturmessung im Aquarium nebst Alarmmeldung benutzen - was man da zu kaufen bekommt, gefällt mir nicht.

An Deinem Gerät beeindruckt mich die schöne Gestaltung des Displays. Hast Du das selber programmiert?

Gruß

knut735

#7371332
Lesenswert?

Hallo nixiefan,

danke, ich habe es soeben heruntergeladen und gespeichert.

Mal sehen, ob ich es hinkriege und dann später an meine Verhältnisse anpassen kann. Ist mein erster Versuch mit einem grafischen Display. Allerdings komme ich in den nächsten Tagen nicht dazu (Gartenarbeit usw.).

Nochmals vielen Dank!

knut735

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren