Test ePaper Waveshare 1.54

Hatte mit dieses Display bei der Make Munich gekauft und schon befürchtet das es ein Fehlkauf sein würde, weil es mit Arduino nicht angesteuert werden kann (wurde für Raspberry beworben). Danke für die Info. Grüße Uwe

Hi

Na da habe ich ja Glück, daß ich Das bisher nicht wusste …
Dieses Display läuft an einem Nano mit Beispiel-Code und zählt Sekunden hoch.
Klar sollte sein, daß ein Grafik-Display halt mehr Speicher braucht, als ein 1602.

Meine ePapers machen nicht wirklich Sinnvolles, aber immerhin klappen Sie bis her.

Ich schaue Mal, ob ich noch ein Foto dabei gepackt bekomme …

MfG
Edit
Lib:github, soonuse, epd-library-arduino
Beispiel auf Sekunden-Uhr ‘umgestrickt’, ZIP



epd1in54-demo-postmaster_ino.zip (6.41 KB)

postmaster-ino: Na da habe ich ja Glück, daß ich Das bisher nicht wusste ... Dieses Display läuft an einem Nano mit Beispiel-Code und zählt Sekunden hoch.

Wenn Du es im Gegensatz zu stoni99 mit den Beispiellibs zum Laufen bekommen hast, wären bestimmt alle an Deinem Code interessiert und natürlich den Links zu den Libs.

Gruß Tommy

Hi

Habe im obigen Post das ganze Zeug eingefügt. Wirklich produktiv nutze ich das Display nicht wirklich - aber immerhin zeigt's was an :) Hoffe, die Beinchen vom Nano kann man abzählen - da die Drähte des ePaper-Stecker verschiedenfarbig sind und auf meinem ePaper die Pins beschriftet sind, sollte sich Das aber zusammen bekommen lassen.

Das Spinnengeweb an GND (SW) ist eine optische Täuschung ... bestimmt ;)

MfG

postmaster-ino: Das Spinnengeweb an GND (SW) ist eine optische Täuschung ... bestimmt ;)

Löten ist was für Anfänger, heute wird gespidert! ;)

Tommy56: Wenn Du es im Gegensatz zu stoni99 mit den Beispiellibs zum Laufen bekommen hast, wären bestimmt alle an Deinem Code interessiert und natürlich den Links zu den Libs.

Gruß Tommy

Die EPD-Lib Demo läuft bei mir auch. Aber nicht diese GxEPD-Lib & Demo.

Hallo,

ich habe hier nur 1x 2,9" b/w im "Einsatz" mit einer relativ alten GxEPD-Lib, stabil als Uhr. Ein 2,9" 3-farbig liegt rum, mal getestet mit besagter Lib, läuft. In der aktuellen Version der GxEPD-Lib hat er was geändert, ich war aber zu faul, das anzupassen. Mein Bekannter hat sein 2,9" mit der GxEPD2 laufen, keine Probleme. Aaaaber: alles am ESP8266/ESP32, Displays, die gern etwas Ram haben wollen, hänge ich an AVR garnicht erst ran...

|500x222 Die Uhr läuft mit Sekundenanzeige und partial-Refresh damit es nicht flackert. Die Sekinde schafft sie nicht wirklich, Refreshzeit ist knapp darüber, also gibt es ab und an eben einen 2-Sekundensprung.

Gruß aus Berlin Michael

E-Paper.jpg|658x293

amithlon: ...partial-Refresh damit es nicht flackert. /quote]

Was ist das? Wie geht das?

Hallo,

stoni99:

amithlon: ...partial-Refresh damit es nicht flackert. /quote]

Was ist das? Wie geht das?

Das Display muß das können, prinzipiell wohl sowieso nur die s/w, die 3-farbigen generell nicht. Ich habe jtzt nur in meiner alten Version der GcEPD-Lib geschaut, Dein Display dürfte dort ja das GxGDEP015OC1 sein, das scheint es zu können: // paged drawing to screen rectangle at (x,y) using partial update void drawPagedToWindow(void (*drawCallback)(void), uint16_t x, uint16_t y, uint16_t w, uint16_t h); Ab und an muß man einen kompletten Refresh machen, sonst vergisst es einzelne Pixel bzw. der Kontrast wird ungleichmäßig. Ich mache den so alle 5 Minuten, ich habe es nicht weiter ausgetestet, bleibenden Schaden richtet es ja nicht an, nur die aktuelle Darstellung kann leiden.

Gruß aus Berlin Michael

Ich habe in meiner Wühlkiste noch einen Mega 2560 gefunden. Ich möchte das ePaper mal am Mega probieren. Hat ja auch mehr SRam.

Wie ist das dort mit dem SPI Bus? Gleiche Anschlüsse wie beim UNO? Oder müssen Anpassungen vorgenommen werden? Anschluß Uno hier.

Ich habe bisher noch nix weiter mit dem Mega gemacht.

Hi

Nein, die Anschlüsse sind Andere. Siehe hierzu Arduino Reference, SPI

MfG

Edit Rechtschreibung ... Vorschau rules ...

Danke!

Geht aber leider auch nicht. Pin 12 ist im Beispielanschluss mit dem UNO nicht belegt?!

Hi

Pin12 ist beim Uno MISO - Master IN, Slave OUT. Da das Display keine Daten zurück gibt, muß der Uno Da auch nicht mitlesen.

MfG

Ich habe es mal am ICSP angeschlossen - jetzt geht es. THX!

Mit den Mega kann ich auch im Sketch mehr Speicher reservieren und damit auch das Display mit einmal vollschreiben.

...
unsigned char image[4096];
...
...
  //2x löschen notwendig damit Display frei wird
  epd.ClearFrameMemory(0xFF);   // bit set = white, bit reset = black
  epd.DisplayFrame();
  epd.ClearFrameMemory(0xFF);   // bit set = white, bit reset = black
  epd.DisplayFrame();

  paint.SetWidth(200);
  paint.SetHeight(160);
  
  paint.Clear(UNCOLORED);
  epd.DisplayFrame();   //Anzeigen
  paint.DrawStringAt(0, 0, "1 Schiebetor", &Font16, COLORED);
  paint.DrawStringAt(0, 12, "2 Schiebetor", &Font16, COLORED);
  paint.DrawStringAt(0, 24, "3 Schiebetor", &Font16, COLORED);
  paint.DrawStringAt(0, 36, "4 Schiebetor", &Font16, COLORED);
  paint.DrawStringAt(0, 48, "5 Schiebetor", &Font16, COLORED);
  paint.DrawStringAt(0, 60, "6 Schiebetor", &Font16, COLORED);
  paint.DrawStringAt(0, 72, "7 Schiebetor", &Font16, COLORED);
  paint.DrawStringAt(0, 84, "8 Schiebetor", &Font16, COLORED);
  paint.DrawStringAt(0, 96, "9 Schiebetor", &Font16, COLORED);
  paint.DrawStringAt(0, 108, "10 Schiebetor", &Font16, COLORED);
  paint.DrawStringAt(0, 120, "11 Schiebetor", &Font16, COLORED);
  paint.DrawStringAt(0, 132, "12 Schiebetor", &Font16, COLORED);
  epd.SetFrameMemory(paint.GetImage(), 0, 0, paint.GetWidth(), paint.GetHeight());
  epd.DisplayFrame();   //Anzeigen
...

Was mich noch stört ist dieses Geflacker beim Neuschreiben einer Displayanzeige.

Das macht der merkwürdiger Weise im Democode nicht wenn das Hintergrundbild geladen ist und die Zeit angezeigt wird.

In welchem Verzeichnis steht denn eigentlich diese imagedata.h?

#include 
#include 
#include 
#include "imagedata.h"

#define COLORED     0
#define UNCOLORED   1
epd.SetFrameMemory(IMAGE_DATA);
  epd.DisplayFrame();
  epd.SetFrameMemory(IMAGE_DATA);
  epd.DisplayFrame();

Ich habe mal versucht dieses vorgegebene Hintergrundbild (IMAGE_DATA) durch ein eigenes zu ersetzen.

Wird leider nur gequirlte Sch... angezeigt. :grin:

Was mache ich falsch?

.....

#include 
#include 
#include 
//#include "imagedata.h"

#define COLORED     0
#define UNCOLORED   1


const unsigned char gImage_weiss[3556] = { 0X00,0X01,0XC7,0X00,0X8E,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
.......
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,};


unsigned char image[1024];
Paint paint(image, 0, 0);    // width should be the multiple of 8 
Epd epd;
unsigned long time_start_ms;
unsigned long time_now_s;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  if (epd.Init(lut_full_update) != 0) {
      Serial.print("e-Paper init failed");
      return;
  }



  epd.ClearFrameMemory(0xFF);   // bit set = white, bit reset = black
  epd.DisplayFrame();
  epd.ClearFrameMemory(0xFF);   // bit set = white, bit reset = black
  epd.DisplayFrame();

......

  /** 
   *  there are 2 memory areas embedded in the e-paper display
   *  and once the display is refreshed, the memory area will be auto-toggled,
   *  i.e. the next action of SetFrameMemory will set the other memory area
   *  therefore you have to set the frame memory and refresh the display twice.
   */
  epd.SetFrameMemory(gImage_weiss);
  epd.DisplayFrame();
  epd.SetFrameMemory(gImage_weiss);
  epd.DisplayFrame();

  time_start_ms = millis();
}

void loop() {
  // put your main code here, to run repeatedly:
  time_now_s = (millis() - time_start_ms) / 1000;
  char time_string[] = {'0', '0', ':', '0', '0', '\0'};
  time_string[0] = time_now_s / 60 / 10 + '0';
  time_string[1] = time_now_s / 60 % 10 + '0';
  time_string[3] = time_now_s % 60 / 10 + '0';
  time_string[4] = time_now_s % 60 % 10 + '0';

  paint.SetWidth(32);
  paint.SetHeight(96);
  paint.SetRotate(ROTATE_270);

  paint.Clear(UNCOLORED);
  paint.DrawStringAt(0, 4, time_string, &Font24, COLORED);
  epd.SetFrameMemory(paint.GetImage(), 80, 72, paint.GetWidth(), paint.GetHeight());
  epd.DisplayFrame();

  delay(500);
}

Wir wissen ja nicht, was Du getan hast. Woher sollen wir da wissen, was Du falsch machst?

Gruß Tommy

Steht doch da Tommy! :grin:

Nee. ich hatte ein paar Probleme beim Kürzen des Codes - passen nur 9000 Zeichen ins Forum - habe es jetzt nachgereicht.

Bei der EPD-Lib bekomm ich kein Bild zu laden.

Die imagedata.h habe ich nach langem Suchen gefunden: Merkwürdigerweise im Ordner der Sketche. Die Suche im Datei-Explorer hat sie komischerweise nicht gefunden.

Die GxEPD habe ich jetzt zum Laufen gebracht. Wie? Keine Ahnung! :grin: Ich habe die GxEPD2 & GxEPD nochmal gelöscht (aus dem Sketch Ordner) und neu installiert, dann am Mega nochmal neu verkabelt und plötzlich funzt es.

Ob die Lib besser ist muss ich erst noch testen. Im Beispielcode gibt es aber einen Sketch zur partiellen Änderung ohne Flackern.