-
-
Notifications
You must be signed in to change notification settings - Fork 26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
gdew075T7 Reduce black-white transitions during display update or invoke partial update #10
Comments
The only way I know is doing a partial update, full update() always uses 3 refreshes, that is not an issue is the normal behaviour. Only partial update uses one transition. But on 7.5" V2 is still not working like it should. We will need to go together through the documentation. https://storage.luckycloud.de/d/3d3bfde36f7744cb90d5/?p=/GoodDisplay&mode=list PDFs GD7965 is the controller. In http://www.good-display.com is not listed anymore so we may have to email them. It's not easy to find documentation for this ones, since sometimes they remove models if there are not available anymore. |
Will check if I can find a datasheet later - meanwhile do you know the Zephyr project: https://www.zephyrproject.org/? |
Nice will research a bit tonight and check against the commands we are sending. I hope it can be fixed since I'm also very interested in get partial updates working as they should |
Will be some days away from the keyboard since I’m going to Poland. Will keep this one on my mind for further research |
Ref and sample code from Waveshare: |
@BitSalat Added a new class wave7i5.h Still not tested, have to coordinate with my father, since I do not have this EPD at home anymore (Was a gift to him) |
Dev boards are on their way to you - please check your email! |
Many thanks. Sadly I have 2 not so good news:
void Epd::Displaypart(const unsigned char* pbuffer, unsigned long xStart, unsigned long yStart,unsigned long Picture_Width,unsigned long Picture_Height) {
SendCommand(0x13);
int * padd; // Why on earth they declare a pointer they dont use?
for (unsigned long j = 0; j < height; j++) {
for (unsigned long i = 0; i < width/8; i++) {
if( (j>=yStart) && (j<yStart+Picture_Height) && (i*8>=xStart) && (i*8<xStart+Picture_Width)){
SendData(~(pgm_read_byte(&(pbuffer[i-xStart/8 + (Picture_Width)/8*(j-yStart)]))) );
}else {
SendData(0x00);
}
}
}
SendCommand(0x12);
} This in my opinion is just like a normal update. See that in the other class is sending a "Partial IN" command and some Ram pointers, to signalize the update area. |
@BitSalat sent an email to good display about partial update and added here: |
This comment has been minimized.
This comment has been minimized.
Last 7.5 I ordered does not support partial update. News: Good Display sent an example program that performs a partial update (In other platform) |
thanx for your continued efforts for the partial update however I understand that it is not supported on the 7.5" displays from Waveshare or GoodDisplay. Perhaps there will be new devices in the future. |
It's not supported on the color ones. In 7.5" 2 color is supported and I attached the Good Display example.
|
…was borrowed from GxEPD. Not tested, will make a termin with father
Dear Stefan I will try to get one 7.5 epaper again this time. Tried last week but they are out of stock. This epaper have support for partial update but is not easy to do and undocumented. |
New 7.5 gdew075T7 was purchased days ago. When it arrives I will make a deep test on this one again and try to solve the partial update and find a way to make the temperature issue better (If possible) |
Such a bad luck with this one. It arrived but didn't left any message, so it comes back to China...AHhhm. And after they send again I will finally get it ;) |
@BitSalat my new 7.5 epaper is finally coming to Berlin in the next weeks. Sorry that it took so long. I’m still very grateful to use the ESP32 controllers you sent me and about the growth of this library because of you, the early main adopters |
@martinberlin thanx for info. We are using your cale-idf for our OpenHAB / HomeAssistant ePaper displays with great success and wouldn't have been able to do so without your libraries. There's only one thing still a bit annoying. For updating the screen it takes 4 changes between black and white which looks not so sexy. Is there a way to reduce that? |
There is partial update. But is not as clean as full update. When this 7.5 arrives will make a branch so we can test it together. |
EPD 7.5 arrived, will leave it wired to SPI to try new partial display, Goodisplay sent this function, it's for SMT32 but what matters is the CMD and data sent: /***************************partial display function*************************************/
void partial_display(u16 x_start,u16 x_end,u16 y_start,u16 y_end ,const unsigned char *old_data,const unsigned char *new_data,unsigned char mode) //partial display
{
unsigned int i;
EPD_W21_WriteCMD(0X50);
EPD_W21_WriteDATA(0x47);
lut1();
EPD_W21_WriteCMD(0x91); //This command makes the display enter partial mode
EPD_W21_WriteCMD(0x90); //resolution setting
EPD_W21_WriteDATA (x_start/256);
EPD_W21_WriteDATA (x_start%256); //x-start
EPD_W21_WriteDATA (x_end/256);
EPD_W21_WriteDATA (x_end%256-1); //x-end
EPD_W21_WriteDATA (y_start/256);
EPD_W21_WriteDATA (y_start%256); //y-start
EPD_W21_WriteDATA (y_end/256);
EPD_W21_WriteDATA (y_end%256-1); //y-end
EPD_W21_WriteCMD(0x10); //writes Old data to SRAM for programming
if(mode==0)
for(i=0;i<48000;i++)
{
EPD_W21_WriteDATA(0xff);
}
else
for(i=0;i<48000;i++)
{
EPD_W21_WriteDATA(~old_data[i]);
}
EPD_W21_WriteCMD(0x13); //writes New data to SRAM.
for(i=0;i<48000;i++)
{
EPD_W21_WriteDATA(~new_data[i]);
}
EPD_W21_WriteCMD(0x12); //DISPLAY REFRESH
driver_delay_xms(300); //!!!The delay here is necessary, 200uS at least!!!
lcd_chkstatus();
}
/////////////////////////////////partial display waveform////////////////
const unsigned char lut_vcom1[] ={
0x00 ,0x19 ,0x01 ,0x00 ,0x00 ,0x01,//0x00 ,0x19 ,0x01 ,0x00 ,0x00 ,0x01,
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, };
const unsigned char lut_ww1[] ={
0x00 ,0x19 ,0x01 ,0x00 ,0x00 ,0x01,
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,};
const unsigned char lut_bw1[] ={
0x80 ,0x19 ,0x01 ,0x00 ,0x00 ,0x01,
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, };
const unsigned char lut_wb1[] ={
0x40 ,0x19 ,0x01 ,0x00 ,0x00 ,0x01,
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, };
const unsigned char lut_bb1[] ={
0x00 ,0x19 ,0x01 ,0x00 ,0x00 ,0x01,
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, };
|
@BitSalat just corrected the partial update Waveform in branch: refactor/oop You can try to use partial update now. Try flashing demo-epaper.cpp adding it in the CMakeFiles and commenting the rest. |
Dear @BitSalat closing this since I didn't got any feedback since 30 July (4 months aprox.) |
We have implemented latest cale-idf repo but now see an issue with display.update - every update causes 3 transistions from black->white before new contents is visible. As we are using the waveshare 7.5" V2 display I assume that a partial update is not possible?
However why do we need 3 transistions, is there a way to reduce to one transition?
The text was updated successfully, but these errors were encountered: