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
Komplette Fehlermeldung mit Crtl-C kopieren und mit Ctrl-V hier posten. Kot in den Anhang. Dann schaun wir mal! (Copyright Franz Beckenbauer)
Egon M. schrieb: > Also fehlt wohl irgendeine library. Ich befürchte, da fehlt eher der richtige Anschluss oder der richtige Eintrag der Pins. Du brauchst nur eine Bibliothek, GxEPD2 ist die aktuelle. Wenn irgendwas fehlt meckert Arduino.
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
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
Da das eine Lib für viele verschiedene Displays ist, muss man vermutlich das verwendete definieren.
J. S. schrieb: > Da das eine Lib für viele verschiedene Displays ist, muss man vermutlich > das verwendete definieren. Das habe ich getan. Ich vermute aber, daß das den Kompiler überhaupt nicht interessiert
:
Bearbeitet durch User
Egon M. schrieb: > GxEPD2_HelloWorld:27:3: error: 'display' was not declared in this scope > display.init(115200); die Fehlermeldung ist doch eindeutig, nur müsste man sie auch lesen und verstehen.
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.
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 |
:
Bearbeitet durch User
Vielleicht mal lesen was bei den include Kommentaren so steht.
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.
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.
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
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
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)); https://github.com/G6EJD/ESP32-e-Paper-Weather-Display
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
Egon M. schrieb: > Joachim L. schrieb: > An Deinem Gerät beeindruckt mich die schöne Gestaltung des Displays. > Hast Du das selber programmiert? Diesen Teil schon. Wie bei Dir. Das von der Stange gefiel mir nicht. Kann ich dir aber im Quellcode zur Verfuegung stellen, falls Du dir einen flashen willst.Hat das jetzt geklappt mit der SPI Verdrahtung?
Joachim L. schrieb: > Kann ich dir aber im Quellcode zur Verfuegung stellen, falls Du dir > einen flashen willst. Das wäre sehr nett. > Hat das jetzt geklappt mit der SPI Verdrahtung? Habe es noch nicht versucht, weil ich noch anderweitig beschäftigt bin. VG knut735
https://github.com/StrandedAlien/TempweatherEgon/blob/main/Waveshare_1_54.ino du brauchst noch den Rest der Dateien von: https://github.com/G6EJD/ESP32-e-Paper-Weather-Display und musst deine eigenen Daten in own_credentials.h eintragen. Sag' bitte hier Bescheid wenn du es runtergeladen hast.
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.