E-ink display

Tommyk
Příspěvky: 12
Registrován: 03 bře 2019, 16:58
Reputation: 0

E-ink display

Příspěvek od Tommyk » 28 srp 2023, 19:39

Ahoj,

koupil jsem tento e-ink display s označením ER-EPM042-1
https://www.buydisplay.com/download/man ... asheet.pdf
Ale mám problém ho rozchodit. Zkusil jsem už několik zapojení a vzorových kódů s Arduino UNO/ Mega, i s ESP32, ale display se ani nerozsvítí.
Nemáte s ním někdo prosím zkušenost? Popř. alespoň nějaký funkční ukázkový kód od kterého bych se mohl odpíchnout?

Díky Tom

Uživatelský avatar
Caster
Příspěvky: 385
Registrován: 11 zář 2019, 09:02
Reputation: 0

Re: E-ink display

Příspěvek od Caster » 29 srp 2023, 07:32

Já mám 2.9" Tri-Color eInk, který funguje v pohodě. Chci s ním dokončit vlastní projekt na poznámkový blok na lednici, kdy do mobilu (program vytvářím v Android Studio) nadiktuji potraviny s krátkou životností (např. "Šunka 7.9.23"), které jsem koupil, pomocí bluetooth přenesu text na Seeduino Xiao a na lednici pak uvidím kdy musím co zbaštit, abych neprošvihl expiraci (výpis se zbývajícím počtem dnů u každé položky se aktualizuje 1x za den). Program bez blueotooth modulu mi již funguje, musím ho koupit a vyzkoušet přenos z mobilu na Seeduino Xiao.

Doporučuji kontaktovat prodejce, ať ti poradí. Z data sheetu nelze vyčíst, jak ho rozchodit, potřebuješ ukázkový kód vč. zapojení displeje (dej sem případně odkaz).

Tommyk
Příspěvky: 12
Registrován: 03 bře 2019, 16:58
Reputation: 0

Re: E-ink display

Příspěvek od Tommyk » 29 srp 2023, 13:16

Je to tento displej.

https://www.ebay.com.my/itm/Black-4-2-i ... 4ab3f29a9e

A používal jsem tento kód. Zkusím ještě pohladat zapojení podle kterého jsem to zkoušel

Kód: Vybrat vše

/*Web: http://www.buydisplay.com
EastRising Technology Co.,LTD
Examples for ER-EPM042-1B
Display is Hardward SPI 4-Wire SPI Interface 
Tested and worked with:
Works with Arduino 1.6.0 IDE  
Works with Arduino DUE,Arduino mega2560,Arduino UNO Board
****************************************************/

#include <SPI.h>
#include "ER-EPM042-1B.h"
#include "imagedata.h"
#include "epdpaint.h"

#define COLORED     0
#define UNCOLORED   1

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  Epd epd;

  if (epd.Init() != 0) {
    Serial.print("e-Paper init failed");
    return;
  }

  /* This clears the SRAM of the e-paper display */
  epd.ClearFrame();

  /**
    * 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.
    * 1 byte = 8 pixels, therefore you have to set 8*N pixels at a time.
    */
  #if 1  
  unsigned char image[1500];
  Paint paint(image, 400, 28);    //width should be the multiple of 8 

  paint.Clear(UNCOLORED);
  paint.DrawStringAt(0, 0, "e-Paper Demo", &Font24, COLORED);
  epd.SetPartialWindow(paint.GetImage(), 100, 40, paint.GetWidth(), paint.GetHeight());

  paint.Clear(COLORED);
  paint.DrawStringAt(30, 2, "www.buydisplay.com", &Font24, UNCOLORED);
  epd.SetPartialWindow(paint.GetImage(), 0, 64, paint.GetWidth(), paint.GetHeight());
  
  paint.SetWidth(64);
  paint.SetHeight(64);

  paint.Clear(UNCOLORED);
  paint.DrawRectangle(0, 0, 40, 50, COLORED);
  paint.DrawLine(0, 0, 40, 50, COLORED);
  paint.DrawLine(40, 0, 0, 50, COLORED);
  epd.SetPartialWindow(paint.GetImage(), 72, 120, paint.GetWidth(), paint.GetHeight());
  
  paint.Clear(UNCOLORED);
  paint.DrawCircle(32, 32, 30, COLORED);
  epd.SetPartialWindow(paint.GetImage(), 200, 120, paint.GetWidth(), paint.GetHeight());

  paint.Clear(UNCOLORED);
  paint.DrawFilledRectangle(0, 0, 40, 50, COLORED);
  epd.SetPartialWindow(paint.GetImage(), 72, 200, paint.GetWidth(), paint.GetHeight());

  paint.Clear(UNCOLORED);
  paint.DrawFilledCircle(32, 32, 30, COLORED);
  epd.SetPartialWindow(paint.GetImage(), 200, 200, paint.GetWidth(), paint.GetHeight());

  /* This displays the data from the SRAM in e-Paper module */
  epd.DisplayFrame();
 delay(2000);
  #endif 
  
#if 1
  /* This displays an image */
  epd.DisplayFrame(IMAGE_BUTTERFLY);
 delay(2000);
 
  epd.SendCommand(VCOM_AND_DATA_INTERVAL_SETTING);
    epd.SendData(0x87); 
     epd.DisplayFrame(IMAGE_BUTTERFLY);    
       delay(2000); 
      epd.SendCommand(VCOM_AND_DATA_INTERVAL_SETTING);
    epd.SendData(0xF7);       
  #endif  
  
#if 0      
      
     epd.DisplayFrame(IMAGE_BUTTERFLY1);
        delay(2000);  
     epd.SendCommand(VCOM_AND_DATA_INTERVAL_SETTING);
    epd.SendData(0x87);     
     epd.DisplayFrame(IMAGE_BUTTERFLY1);  
      delay(2000);
       epd.SendCommand(VCOM_AND_DATA_INTERVAL_SETTING);
    epd.SendData(0xF7);       
 #endif 
 
  delay(15000);
  epd.ClearFrame();
  epd.DisplayFrame(); 
  
  /* Deep sleep */
  epd.Sleep();
}

void loop() {
  // put your main code here, to run repeatedly:

}

Uživatelský avatar
Caster
Příspěvky: 385
Registrován: 11 zář 2019, 09:02
Reputation: 0

Re: E-ink display

Příspěvek od Caster » 29 srp 2023, 16:57

V tvém příspěvku nikde nevidím odkaz na tvůj displej se vzorovým programem a zapojením...

Tommyk
Příspěvky: 12
Registrován: 03 bře 2019, 16:58
Reputation: 0

Re: E-ink display

Příspěvek od Tommyk » 29 srp 2023, 18:34

Caster píše:
29 srp 2023, 16:57
V tvém příspěvku nikde nevidím odkaz na tvůj displej se vzorovým programem a zapojením...
Vzorový program i s knihovnou je zhruba v 3/4 stránky.. Ale dobře..
https://www.buydisplay.com/arduino/Libr ... 042-1B.zip

A zapojení jsem si v tomto případě vycucal ze zipu zde:
Libraries-Examples_ER-EPM042-1B.zip\Libraries-Examples_ER-EPM042-1B\Libraries\epdif.h
// Pin definition
#define RST_PIN 8
#define DC_PIN 9
#define CS_PIN 10
#define BUSY_PIN 7
Pina SDA a SCL displeje jsem připojil na piny SDA a SCL arduina

Uživatelský avatar
Caster
Příspěvky: 385
Registrován: 11 zář 2019, 09:02
Reputation: 0

Re: E-ink display

Příspěvek od Caster » 30 srp 2023, 04:39

Těch pinů je potřeba zapojit víc, mj. by ti měl program po spuštění na sériovém portu alespoň ohlásit, že je nějaký problém s displejem - Serial.print("e-Paper init failed");.

Zapoj displej podle tohoto videonávodu 8-)

Tommyk
Příspěvky: 12
Registrován: 03 bře 2019, 16:58
Reputation: 0

Re: E-ink display

Příspěvek od Tommyk » 30 srp 2023, 13:07

Zapojený byly všechny :D těch 6 co jsem posílal + 2 napájecí..
Jinak to video jsem našel taky a nic..
https://www.buydisplay.com/download/int ... rduino.pdf
Tohle jsem našel a posílal mi to i čínan a taky nic :D

Jinak s tou konzolí máš pravdu, ale ta nic nevyhodí, nevím proč, žeby špatný program?

Uživatelský avatar
Caster
Příspěvky: 385
Registrován: 11 zář 2019, 09:02
Reputation: 0

Re: E-ink display

Příspěvek od Caster » 30 srp 2023, 14:44

Ten program by měl vypsat chybu, jen když se displej neinicializuje správně. Vypadá to tedy, že je správně inicializován. Pro jistotu bych zkusil před výpisem dočasně změnit podmínku místo "if (epd.Init() != 0) {" dát "if (epd.Init() = 0) {", mělo by to vypsat tu hlášku, displej je ale správně inicializován.

Zkusil bych prověřit, zda máš aktuální verzi knihovny pro displej. Další možností je zkusit displej u někoho jiného s jiným Arduinem.

Bez logického analyzátoru nebo osciloscopu ale těžko ověříš, že program posílá správná data na piny (SPI).

Tommyk
Příspěvky: 12
Registrován: 03 bře 2019, 16:58
Reputation: 0

Re: E-ink display

Příspěvek od Tommyk » 30 srp 2023, 16:17

Nojo jenže chybu to nevypíše ani s odpojeným displejem..
Zkoušel jsem Arduino UNO i Mega

Jinak pokud udělám úpravu podle tebe tak mi IDE vyhodí při kompilaci chybu:

Kód: Vybrat vše

exit status 1
lvalue required as left operand of assignment

Uživatelský avatar
gilhad
Příspěvky: 788
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: E-ink display

Příspěvek od gilhad » 30 srp 2023, 17:03

je to překlep, v tom porovnání má být to rovnítko samozřejmé dvojité

Kód: Vybrat vše

if (epd.Init() == 0) {

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 42 hostů