Hallo
ich habe ein 2,13" E-Paper von Waveshare an einen Arduino Mega
angeschlossen. Das Ganze funktioniert einigermaßen, d.h. die Arduino-IDE
kann eine Beispieldatei von Waveshare übersetzen, auf den Mega hochladen
und auf dem E-Paper erscheinen tatsächlich Bildchen und Texte, die ich
auch editieren kann.
Das ist schon mal ein Anfang, da könnte man sich weiter vortasten.
Allerdings wäre es hilfreich, wenn man eine genauere Übersicht hätte,
wie die Sachen dargestellt werden. Z.B. funktioniert es nicht, wenn ich
eingebe:
1
paint.DrawStringAt(30,30,wert,&Font12,COLORED);
um eine Variable (wert) auf das E-Paper zu bringen.
Manches kann man sich zwar aus den Beispielen zusammenreimen, aber
nützlich wäre eine Übersicht von den gändigsten Befehlen. Hat vielleicht
jemand einen Link zu so etwas?
Vielen Dank schon mal!
VG
knut735
Am einfachst geht es wenn du alles selber programmierst. :)
Die mitgelieferten Beispiele sind grottig, die daraus geklaute
Arduino.Sauce ist nicht besser.
Grund dafuer scheint mir zu sein das es mehrere unterschiedliche
ePapers gab die komplett andere Controller hatten, aber mit
aenlichen Befehlssatz. Natuerlich keineswegs komplett identisch.
Ich glaube Waveshare kauft ein was sie gerade bekommen und verhoekert
das dann weiter.
Aber alle hatten 2.13" Groesse. Da ist natuerlich eine Referenzierung
ueber die Groesse ein Schmerz im Arsch.
Vanye
Egon M. schrieb:> paint.DrawStringAt(30, 30, wert, &Font12, COLORED);> um eine Variable (wert) auf das E-Paper zu bringen.
Der Name der Funktion klingt danach, als wäre sie zum Zeichnen eines
(Text)strings gedacht; welchen Typ hat denn Deine Variable?
Michi S. schrieb:> welchen Typ hat denn Deine Variable?
Das weiß ich jetzt noch nicht, im ersten Anlauf wahrscheinlich int oder
float. Könnte man ja in Text umwandeln, aber ich dachte, daß es in der
E-Paper-Programmierungs-Sprache so etwas auch vorgefertigt geben müßte.
VG
Vanye R. schrieb:> Am einfachst geht es wenn du alles selber programmierst. :)
Ja, wäre mir auch am liebsten. Aber ich brauche erst mal einen Einstieg,
da ich noch nie so eine Grafik programmiert habe. Ich weiß nicht, wie
man dem Ding sagt, an welchem waagerechten und senkrechten Pixel
begonnen werden soll, wie z.B. ein Textausgabezeile strukturiert werden
sollte usw. usf.
Ein Rechteck oder einen Kreis könnte ich ja noch produzieren, aber dann
heißt es bei dem einen "paint...", beim anderen "Display...".
Ich würde mich auf irgend eine verfügbare "Sprache" beschränken, die zu
dem Controller paßt, der auf dem Waveshare 2,23" sw verbaut ist.
VG
knut735
Jan H. schrieb:> GxEPD library (Arduino) scheint mir gepasst:> https://github.com/ZinggJM/GxEPD
Das ist die Type, wo es bei mir am "...Display.." hapert (vgl.
angehängte Fehlermeldung). Vielleicht müßte ich da irgendwas
nachinstallieren?
Bei mir hört das Teil nicht auf "display", sondern auf "paint" von
Waveshare. Hast Du auch so ein Waveshare-E-Paper oder ein anderes?
Hier die Fehlermeldung:
Siehe oben: Mit GxEPD2 geht es einwandfrei, mit GxEPD eben nicht so
einfach.
Aber wenn Ihr meint. Wie sagen die im Nordwesten WAT MUTT,DAT MUTT!
Kompletter Sketch:
https://github.com/G6EJD/ESP32-e-Paper-Weather-Display
Was GxEPD angeht, der Entwickler ist Chinese, fuer den ist API doc
schreiben zu zeitaufwendig. Also einfach aus den Examples lernen. Wollt
ihr das nicht nehmt u8g2 monochrom https://github.com/olikraus/u8g2 Das
ist besser dokumentiert : https://github.com/olikraus/u8g2/wiki
Im uebrigen sind das die besten Epaper-Libraries die man findet.
Hallo,
gibt es eine Möglichkeit, herauszufinden, welcher Controller in
Waveshare 1.23inch-E-ink HAT 250x122 verbaut ist? Ich habe an Waveshare
geschrieben, aber als Antwort nur wieder den Hinweis auf ihren Website
bekommen, wo ich keinen Hinweis auf den Controller gefunden hatte.
Ich habe die Beispiele von U8g2 probiert; man muß eine passende Zeile
wählen. Bei meinem E-Paper paßt:
wahrscheinlich deshalb, weil ich das Teil an einen Arduino Mega
angeschlossen habe und die Verdrahtung lt. dieser Zeile zufällig mit der
Verbindung zum Mega übereinstimmt. Und, weil dort SSD1327 angegeben ist,
der vielleicht in meinem E-Paper verbaut ist?
Jedenfall sieht man auf dem Display etwas, aber nicht das, was im
Programm steht, sondern etwas wie ein QR-Code. Man kann zwar keine
richtige Darstellung erwarten, weil ja die Display-Charakteristika ganz
andere sind, aber so daneben solle es doch nicht sein.
Ob es eine Möglickeit gibt, mein E-Paper doch noch gangbar zu machen?
Bei U8g2 würde ich gern bleiben.
VG
Anbei zwei Bilder von dem 1.23inch-E-ink HAT 250x122. Auf dem Teil steht
Rev 2.1 und außerdem gibt es einen Aufkleber mit "V3".
Angeschlossen ist das Ding an einen Arduino Mega 2560 R3.
Hilft das denn weiter?
Viele Grüße
knut735
Hallo
nachdem das Waveshare 2,13inch e-Paper 250x122 wohl nur seine eigene
Beispieldateien von Waveshare verstehen kann, überlege ich, ob ich mir
ein anderes, z.B. Lilygo TTGO T5 V2.0 4,7", beschaffen sollte.
Aber: unter den Beispieldateien von U8g2 finde ich z.B. bei HelloWorld
(und bei den anderen ist es nicht besser) eine Liste von "Constructors",
von den man eine auswählen muß. Ein passender Eintrag für das
Lilygo-4,7"-Teil gibt es nicht. Wie also mit U8g2 umgehen, wenn schon
die Beispielprogramme nicht für 4,7"-E-Paper geeignet sind?
In GxEPD2_display_selection_added.h findt man zwar etwas, das nach dem
4,7" E-Paper aussieht, aber explizit ist es nicht erwähnt, also
unsicher.
VG
Egon M. schrieb:> nachdem das Waveshare 2,13inch e-Paper 250x122 wohl nur seine eigene> Beispieldateien von Waveshare verstehen kann
Und warum versuchst nicht Du, diese Beispieldateien zu verstehen? Die
sind schließlich nicht dafür gedacht, das Display zu bespaßen, sondern
Entwicklern als Grundlage für eigenes zu helfen.
Da gibt es z.B.
https://github.com/waveshare/e-Paper/blob/master/Arduino/epd2in13_V3/epd2in13_V3.ino
Und da ist ganz klar zu sehen, was man machen muss, um Text auf dem
Display auszugeben. Sogar mit einer wählbaren Schriftart.
Das passiert in der Funktion Setup() in Zeile 32 und 33.
Was bitte ist das Problem?
Jetzt sag' nicht, daß Dir eine Funktion zum Ausgeben eines numerischen
Wertes fehlt. Das kann es ja wohl wirklich nicht sein; Du musst nur
Deinen numerischen Wert in einen String umwandeln, was man z.B. mit
sprintf() erledigen kann, und diesen String dann ausgeben.
Harald K. schrieb:> Jetzt sag' nicht, daß Dir eine Funktion zum Ausgeben eines numerischen> Wertes fehlt. Das kann es ja wohl wirklich nicht sein; Du musst nur> Deinen numerischen Wert in einen String umwandeln, was man z.B. mit> sprintf() erledigen kann, und diesen String dann ausgeben.
Oder man bastelt sich eine, die das übernimmt...
Dann kann man sich eine für float und eine für (unsigend) integer bauen,
die dann auch nicht so viel Speicher fressen wie sprintf.
Rahul D. schrieb:> die dann auch nicht so viel Speicher fressen wie sprintf.
Ja, das "speicherfressende" printf ist irgendwie nicht aus den Köpfen
rauszubekommen. Daß wir mittlerweile meistens nicht mit mit µC
hantieren, die gerade mal 2 kB Flash-ROM haben, und daß man für nicht
genutztes Flash-ROM auch kein Geld vom Hersteller zurückbekommt, das
wird ebenso gerne übersehen wie die Fehlerträchtigkeit selbstgestrickter
Konvertierungsfunktionen (die übrigens auch Speicher brauchen), ganz zu
schweigen von deren Einschränkungen, was Formatierungen angeht. Werte
rechtsbündig ausgeben, mit oder ohne führende Nullen ...
Aber ja, printf ist ja so speicherfressend.
Daß vernünftige Compiler mit Libraries für unterschiedlich vollständige
printf-Implmentierungen daherkommen (mit oder ohne Unterstützung für
float, mit oder ohne Unterstützung variabler Feldbreiten (* im
Formatstring), mit oder ohne 64-Bit-Unterstützung ...), und dadurch
natürlich unterschiedlich viel Speicher benötigen, das wird auch gerne
übersehen, denn printf ist ja sooo speicherfressend.
Speicher braucht man für das EPD sowieso. Und die Daten sollen ja auch
schnell irgendwo herkommen, http/MQTT per WLAN zB. Und Controller die
das können juckt ein printf nicht. Da muss man nix optimieren.
Harald K. schrieb:> Rahul D. schrieb:>> die dann auch nicht so viel Speicher fressen wie sprintf.>> Ja, das "speicherfressende" printf ist irgendwie nicht aus den Köpfen> rauszubekommen. Daß wir mittlerweile meistens nicht mit mit µC> hantieren, die gerade mal 2 kB Flash-ROM haben, und daß man für nicht> genutztes Flash-ROM auch kein Geld vom Hersteller zurückbekommt, das> wird ebenso gerne übersehen wie die Fehlerträchtigkeit selbstgestrickter> Konvertierungsfunktionen (die übrigens auch Speicher brauchen), ganz zu> schweigen von deren Einschränkungen, was Formatierungen angeht. Werte> rechtsbündig ausgeben, mit oder ohne führende Nullen ...>> Aber ja, printf ist ja so speicherfressend.>> Daß vernünftige Compiler mit Libraries für unterschiedlich vollständige> printf-Implmentierungen daherkommen (mit oder ohne Unterstützung für> float, mit oder ohne Unterstützung variabler Feldbreiten (* im> Formatstring), mit oder ohne 64-Bit-Unterstützung ...), und dadurch> natürlich unterschiedlich viel Speicher benötigen, das wird auch gerne> übersehen, denn printf ist ja sooo speicherfressend.
Da hat wohl jemand schlecht geschlafen.
Natürlich kann man (s)printf verwenden.
> Konvertierungsfunktionen (die übrigens auch Speicher brauchen), ganz zu> schweigen von deren Einschränkungen, was Formatierungen angeht. Werte> rechtsbündig ausgeben, mit oder ohne führende Nullen ...
Aber man kann dann auch eigene Sachen einbauen. Ein Beispiel hab ich
ja schon genannt. Ein weiteres:
Mein eigenes Printf kann auch Integer als Festkomma ausgeben.
Ich kann programmintern immer mit dem 10x oder 100x Wert rechnen
und nur bei der Ausgabe fuege ich dann einen Punkt an der richtigen
Stelle ein.
Vanye
Harald K. schrieb:> Und warum versuchst nicht Du, diese Beispieldateien zu verstehen? Die> sind schließlich nicht dafür gedacht, das Display zu bespaßen, sondern> Entwicklern als Grundlage für eigenes zu helfen.
Das versuche ich ja unentwegt.
Aber:
1.) die Beispieldatei von Waveshare, die auch Du mpfohlen hast,
funktioniert. Sie läßt sich kompilieren und zeigt auch Bildchen und
Texte auf dem Display. Man hat danach keinerlei Informationen über die
Befehle, um es nach eigenen Bedürfnissen umzuwandeln.
2.) In den Beispielen von GxEPD2 sind zwar viele Befehle zu sehen, die
man für Eigenbedarf abkupfern könnte, aber es läßt sich nicht
kompilieren. Jedesmal kommt der Hinweis auf Display, was nicht definiert
sei. Da fehlt irgendeine z.B. ... .h-Datei. Ich weiß nicht welche.
3. Bei U8g2 scheint es gut auszusehen, wahrscheinlich gibt es sogar eine
Befehlsreferenz. Nützt aber auch nichts, weil es in der Konstrukturliste
nicht mein Display mit 250 x 122 und 2,13" gibt.
Kennst Du vielleicht andere Beispieldateien, die man durchkauen und
ausschlachten könnte?
VG
Also wenn du die Bibliothek von Uwe verwendet, musst du auch seine
Beispiele verwenden. Menue ganz links. Damit ist der Fall geloest. U8G2
ist gut. Wenn du HW- SPI verwendest und das an einen anderen MC
anschliessen willst solltest du mal die SPI Doku (fuer Arduino)
ueberfliegen. Zusammengefasst: Die beiden Anschluesse in der U8G2 Zeile
kannst Du frei legen. Anschlussnummer entsprechen anpassen. Die die
fehlen sind fest (daher der Name HW-SPI). Nach Pinout Bildchen des
Zielboard anschliessen. Fettisch.
Und etwas weiter unten, in der Funktion setup(), wird eine Klasse namens
"Paint" verwendet:
1
Paintpaint(image,epd.bufwidth*8,epd.bufheight);//width should be the multiple of 8
Das ist die Definition einer Variablen namens "paint" vom Typ "Paint",
und der Aufruf eines Konstruktors, dem diverses Zeug übergeben wird.
Und dann ... kommt die interessante Funktion zum Ausgeben von Text auf
dem Display:
Also ist es naheliegend, sich mal die Deklaration der Klasse Paint
anzusehen. Am Anfang habe ich auf ein paar #include-Anweisungen
hingewiesen, der Name "epdpaint.h" klingt doch irgendwie verdächtig.
Also werfen wir einen Blick in diese Datei rein:
https://github.com/waveshare/e-Paper/blob/master/Arduino/epd2in13_V3/epdpaint.h
Und da steht das das hier drin:
Das ist die Liste aller Memberfunktionen der Klasse Paint, die Du
verwenden kannst. Die Namen sollten reichlich selbsterklärend sein,
alles, was mit "Draw" anfängt, hat offenkundig irgendwas mit dem
Zeichnen von Dingen zu tun.
Wofür wohl mag "DrawStringAt" stehen? Was könnten deren Parameter x und
y bedeuten? Oder der Parameter "text"?
Das sind also "keinerlei Informationen".
Sorry, aber ich hab' das hier jetzt in vielleicht fünf Minuten für Dich
'rausgefunden, das ist echt keine Raketenwissenschaft.
🕵︎ Joachim L. schrieb:> Also wenn du die Bibliothek von Uwe verwendet, musst du auch seine> Beispiele verwenden.
Uwe? Ich finde bei Github OliKraus - ist das etwa etwas anderes?
Ich habe über Arduinos Library Manager U8g2 in Arduino installiert und
benutze die Beispiele von dort. Ist das richtig?
Dann habe ich bei Github die riesige Konstruktorenliste durchgesehen.
Etwas mit 250x122 finde ich partout nicht. Wenn es nötig ware, würde ich
die SPI-Verdrahtung anpassen, aber wenn schon die 250x122 nicht gefunden
werden?
Jedenfalls läßt sich das Beispiel nicht kompilieren, es bleibt immer an
dem nur näherungsweise passenden Konstruktoreintrag hängen.
> Menue ganz links. Damit ist der Fall geloest.
Meinst Du Menue ganz links in Arduino-IDE 2.0.x?
> U8G2 ist gut.
Wenn nur wenigstens die Beispiele liefen, dann könnte ich mich
durchhangeln. Vielleicht sollte ich über andere E-Papers (Lilygo?)
nachdeken? Dann würde ich vorher nachsehen, ob sie in der Liste
enthalten sind.
VG
knut735
Harald K. schrieb:> Das ist die Liste aller Memberfunktionen der Klasse Paint, die Du> verwenden kannst. Die Namen sollten reichlich selbsterklärend sein,> alles, was mit "Draw" anfängt, hat offenkundig irgendwas mit dem> Zeichnen von Dingen zu tun.
Ich versuche es mal, nachdem ich mit U8g2 derzeit nicht weiter komme.
Das Drehen des Bildschirms ist mir schon gelungen
VG
Egon M. schrieb:> Ich habe die Beispiele von U8g2 probiert; man muß eine passende Zeile> wählen. Bei meinem E-Paper paßt:U8G2_SSD1327_WS_128X128_F_4W_HW_SPI> u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);>> wahrscheinlich deshalb, weil ich das Teil an einen Arduino Mega> angeschlossen habe und die Verdrahtung lt. dieser Zeile zufällig mit der> Verbindung zum Mega übereinstimmt. Und, weil dort SSD1327 angegeben ist,> der vielleicht in meinem E-Paper verbaut ist?
Natuerlich Oli. Du hast doch gesagt es laeuft mit der Zeile. Oder doch
nicht? Wenn der Controller stimmt und die Aufloesung (paar Pixel mehr
sollte auch gehen), ist alles OK. Das mit dem SPI anschliessen, solltest
du lernen. Welche Konfig Zeile verwendest du denn mit GxEPD2?
🕵︎ Joachim L. schrieb:> tuerlich Oli. Du hast doch gesagt es laeuft mit der Zeile. Oder doch> nicht? Wenn der Controller stimmt und die Aufloesung (paar Pixel mehr> sollte auch gehen), ist alles OK. Das mit dem SPI anschliessen, solltest> du lernen. Welche Konfig Zeile verwendest du denn mit GxEPD2
Also, bei GxEPD2_HelloWorld "läuft" es mit der Zeile
Allerdings bedeutet das hier nur, daß es kompilierbar ist. Auf dem EPD
tut sich nichts. Ich habe nämlich nicht die Anschlüsse gem. obigen
Schema geändert, sondern es zunächst so belassen wie es bei EPD2in13,
der von Waveshare gelieferten Beispieldatei, funktioniert.
Im übrigen sind die GxEPD-Veruche sehr maliziös. Fast immer scheitert es
daran, das das Fehlen von display bemängelt wird. Ich weiß leider nicht,
was ich da noch includieren sollte.
Gru0
knut735
Egon M. schrieb:> Im übrigen sind die GxEPD-Veruche sehr maliziös. Fast immer scheitert es> daran, das das Fehlen von display bemängelt wird. Ich weiß leider nicht,> was ich da noch includieren sollte.
Du könntest die von Dir verwendete Programmiersprache erlernen. Oder
damit aufhören, wild irgendwelchen irgendwo zusammengesuchten Code zu
mischen.
Der Waveshare-Beispielcode funktioniert, wie Du selbst geschrieben hast.
Und der Waveshare-Beispielcode macht alles, was Du brauchst.
Es ist also völlig unnötig, irgendwelchen anderen Code, irgendwelche
anderen Libraries zu verwurschteln.
Harald K. schrieb:> Und der Waveshare-Beispielcode macht alles, was Du brauchst.
Naja, wenigstens fast alles. Ich kann z.B. nur einen Teil des E-Papers
beschreiben, der Rest wird einfach abgeschnitten und nicht dargestellt.
Vielleicht finde ich da noch einen Ausweg.
VG
Egon M. schrieb:> Ich kann z.B. nur einen Teil des E-Papers> beschreiben, der Rest wird einfach abgeschnitten und nicht dargestellt.
Und das macht der unveränderte Beispielcode auch?
Harald K. schrieb:> Und das macht der unveränderte Beispielcode auch?
Nein, es wird ein Blumenbildchen über den ganzen Schirm dargestellt (was
ich aber dann abgestellt habe). Zum Schluß aber wird vieles
abgeschnitten.
Ich habe den als Spielwiese benutzten Sketch angfügt und dann als Bild,
was dargestellt wird.
1
// EPD2in13-230326-2
2
// von Waveshare
3
// kompilierbar und funktionsfähig
4
// auf Mega und Arduino 2.0.4 und auch 1.8.19
5
// wird als erste Basis für Weiterentwicklung benutzt
6
// Blumenbild ist abgeschafft, nervöses Blinken geblieben
7
// Ausrichtung fehlerhaft, Variable nicht dargestellt
8
9
#include<SPI.h>
10
#include"epd2in13_V3.h"
11
#include"epdpaint.h"
12
#include"imagedata.h"
13
14
#define COLORED 0
15
#define UNCOLORED 1
16
17
/**
18
* Due to RAM not enough in Arduino UNO, a frame buffer is not allowed.
19
* In this case, a smaller image buffer is allocated and you have to
20
* update a partial display several times.
21
* 1 byte = 8 pixels, therefore you have to set 8*N pixels at a time.
22
*/
23
unsignedcharimage[1050];
24
Paintpaint(image,0,0);
25
Epdepd;
26
27
voidsetup()
28
{
29
// put your setup code here, to run once:
30
Serial.begin(115200);
31
Serial.println("EPD2in13-230326-1 und epd FULL");
32
epd.Init(FULL);
33
// epd.Display(IMAGE_DATA); // Das Blumenbild wird angezeigt
34
intwert=20;
35
delay(1000);
36
paint.SetRotate(2);
37
38
Paintpaint(image,epd.bufwidth*8,epd.bufheight);//width should be the multiple of 8
paint.DrawCircle(25,25,20,COLORED);// an falscher Stelle
63
paint.DrawFilledCircle(75,25,20,COLORED);// an falscher Stelle u. abgeschnitten
64
epd.Display1(image);//3
65
66
paint.Clear(UNCOLORED);
67
epd.Display1(image);//4
68
69
delay(2000);
70
71
// Serial.println("epd PART");
72
// epd.DisplayPartBaseImage(IMAGE_DATA);
73
// char i = 0;
74
// for (i = 0; i < 10; i++) {
75
// Serial.println("e-Paper PART IMAGE_DATA");
76
// epd.Init(PART);
77
// epd.DisplayPart(IMAGE_DATA);
78
// Serial.println("e-Paper PART Clear");
79
// epd.Init(PART);
80
// epd.ClearPart();
81
// }
82
83
epd.Init(FULL);
84
Serial.println("e-Paper clear and sleep");
85
// epd.Clear();
86
epd.Sleep();
87
88
}
89
90
voidloop()
91
{
92
}
Wie man sieht, sind die Texte abgeschnitten, die diagonale Linie und das
Rechteck auch. Dagengen sind die Kreise nicht da, wo sie hingehören,
einer ist abgeschnitten.
Wenn man irgendwo epd.Display1(image); deaktiviert, wird gar nichts
dargestellt.
Gruß
knut735
Egon M. schrieb:> #include "epd2in13_V3.h"> #include "epdpaint.h"> #include "imagedata.h"
und warum zeigst du nur die Hälfte?
wo sind die #include und warum zeigst du sie nicht?
Seit Tagen will man dir helfen aber es kommt nur mimimi geht nicht
klappt nicht.
Nicht einmal zeigst du systematische Fehleranalyse oder bemühst dich um
verständliche Kommunikation!
Wie alt bist du eigentlich?
Ja, zu unsystematisch. Hilfe meinerseits:
1. Sicher! sein das das SPI korrekt angeschlossen ist. Am besten mit
einem anderen Geraet probieren das auch HW-SPI unterstuetzt, wenn du
eines hast.
2. Wenn das dann stimmt u8g2 und GxEPD2 Konfigurationszeilen mit der
gleichen oder wenig groesseren Aufloesung in HW-SPI Variante
ausprobieren bis die jeweiligen Beispiele laufen.
Vorteil dieser beiden Libraries ist, das sie eine Vielzahl von Displays
unterstuetzen und die Waveshare lt. deiner Aussage ohnehin Probleme hat.
Was deine Frage zum Lilygo 4.7 Kauf angeht: Achte drauf das Du mit
Doppel-P bezahlen kannst, sonst bist du zur Abzocke freigegeben. Das
Tracking heutzutage funktioniert nicht mehr wie vor zwei Jahren noch und
ist eher fuer die Dachhasen.
Am besten suchst Du selbst mal. Guenstig waere z.B.
https://www.tindie.com/products/lilygo/lilygo-t5-47-inch-e-paper-esp32-v3-version/
ist aber voellig ungetestet von mir. Selbst checken!
Wenn Du das Ding zu DEM Preis und den genannten Versandkosten auch
bekommst, hast du ein Schnaeppchen gemacht. Am besten den Touchscreen
gleich mitbestellen, damit kannst du dir Bedienelemente bauen die noch
nicht mal der Kaept'n der Enterprise hatte.
Egon M. schrieb:> Paint paint(image, epd.bufwidth*8, epd.bufheight);
Mach dir eine Debug-Ausgabe für die Buffer-Breite/Höhe rein.
Passt das zufällig zu deinen abgeschnittenen Bildbereichen?
Und passt
Egon M. schrieb:> unsigned char image[1050];
zu deinen Breite/Höhe-Angaben?
Finally:
Egon M. schrieb:> * Due to RAM not enough in Arduino UNO, a frame buffer is not allowed.> * In this case, a smaller image buffer is allocated and you have to> * update a partial display several times.
Hast du gelesen und verstanden?
Insbesondere das mit dem "partial"?
Nimm einen ESP32 zum testen der Ansteuerung. Ist besser, weil mehr RAM.
So kannst du frei waehlen zwischen allen Beispielen. Wenn eins laeuft,
laufen alle.
Verwende die monochrom Version: https://github.com/olikraus/U8g2_Arduino
oder probiere GxEPD2. Wie gesagt !!! Erst SPI richtig anschliessen !!!
Wenn du dir nicht sicher bist lesen, fragen, gockeln, testen bis du dir
sicher bist. Mit einem unproblematischem SPI geraet testen!
🕵︎ Joachim L. schrieb:> Nimm einen ESP32 zum testen der Ansteuerung. Ist besser, weil mehr RAM.> So kannst du frei waehlen zwischen allen Beispielen. Wenn eins laeuft,> laufen alle.
Ja, das habe ich auch vor bzw. schon begonnen. Das Problem ist, daß ich
von meinen verschiedenen ESP32 einen heraussuchen und dabei die
richtigen SPI-Anschlüsse heraufinden muß. Ist eine Fleißarbeit und ich
komme z.Zt. nicht dazu, bin aber hoffnungsvoll.
Übrigens: ich habe bei Olikraus gelesen, daß die Arbeit an U8g2 nicht
weitergeführt würde, weil es im Vergleich zu J.-M. Zingg nur
Doppelarbeit bedeutete. Es wird der Übergang zu GxEPD (nicht GxEPD2)
empfohlen. Ich habe lange versucht, diese Stelle wiederzufinden, ist mir
leider nicht gelungen.
Jedenfalls habe ich bei J.-M. Zingg gelesen, daß nun zahlreiche E-Papers
erfaßt würden; explizit wurden die Waveshare-Typen genannt! Ich habe
einige Beispiele getestet und die ließen sich problemlos kompilieren.
Nun muß ich, wenn ich dazukomme, nur noch eine passende SPI-Verbindung
herausfinden.
Gruß
knut735
Das ist nicht wirklich eine Fleissarbeit. Man muss es einmal verstanden
haben. Das Problem ist bei der Namensgebung der Anschluesse, sowohl bei
den Arduino Pins im allgemeinen, als auch bei den SPI Pins insbesondere.
Orientiere dich an den Auswahlzeilen der Libraries, da stimmen sie immer
und sind einheitlich benannt. Der Rest steht schon oben. Arbeite meine
Tips durch und ueberlege warum ich das so vorgeschlagen habe. Ansonsten
hast du recht, ein bischen Uebung schadet nicht. Hat mich uebrigens auch
Nerven gekostet.Viel Erfolg dabei.
Egon M. schrieb:> Ist eine Fleißarbeit und ich> komme z.Zt. nicht dazu
du kommst ja nicht mal dazu einfache Fragen zu beantworten!
Joachim B. schrieb:> und warum zeigst du nur die Hälfte?> wo sind die #include und warum zeigst du sie nicht?> Wie alt bist du eigentlich?
🕵︎ Joachim L. schrieb:> Das ist nicht wirklich eine Fleissarbeit. Man muss es einmal verstanden> haben. Das Problem ist bei der Namensgebung der Anschluesse, sowohl bei> den Arduino Pins im allgemeinen, als auch bei den SPI Pins insbesondere.> Orientiere dich an den Auswahlzeilen der Libraries, da stimmen sie immer> und sind einheitlich benannt. Der Rest steht schon oben. Arbeite meine> Tips durch und ueberlege warum ich das so vorgeschlagen habe. Ansonsten> hast du recht, ein bischen Uebung schadet nicht. Hat mich uebrigens auch> Nerven gekostet.Viel Erfolg dabei.
Hallo, es funktioniert!
als ich wieder etwas Zeit hatte und dazu kam, habe ich einen Sketch von
J.M.Zingg gekürzt, auf meine Verhältnisse zugeschnitten und dahinein den
Kram von DS18B20-Abfragen integriert.
Allerdings mußte ich für den DS18B20 die allerneueste Version von
OneWire integrieren, damit es auf einem ESP32 läuft.
Bis auf ein restliches Sofwareproblem und dem noch fehlenden Gehäuse ist
es nun einsatzbereit.
Vielen Dank für Eure freundliche Hilfe!!!
VG
knut735
PS Ich sollte noch erwähnen, daß ich auf ein Lilygo TTGO T5 umgestiegen
bin. Im Gegensatz zu dem nackten Waveshare2.13 funktionierte es sofort
und es ist kompakter und deshalb leichter unterzubringen.