LUT for GDEW029Z10
const unsigned char lut_vcom0[] ={ 0x14 ,0x01 ,0x01 ,0x05 ,0x07 ,0x05 ,0x0C ,0x0C ,0x0A ,0x04 ,0x04 ,0x0A ,0x05 ,0x07 ,0x05 };
const unsigned char lut_w[] ={ 0x14 ,0x01 ,0x01 ,0x45 ,0x07 ,0x05 ,0x8C ,0x4C ,0x0A ,0x84 ,0x44 ,0x0A ,0x85 ,0x07 ,0x05 };
const unsigned char lut_b[] ={ 0x14 ,0x01 ,0x01 ,0x05 ,0x87 ,0x05 ,0x8C ,0x4C ,0x0A ,0x84 ,0x44 ,0x0A ,0x05 ,0x47 ,0x05 };
const unsigned char lut_g1[] ={ 0x94 ,0x81 ,0x01 ,0x05 ,0x87 ,0x05 ,0x8C ,0x4C ,0x0A ,0x84 ,0x44 ,0x0A ,0x05 ,0x07 ,0x05 };
const unsigned char lut_g2[] ={ 0x94 ,0x81 ,0x01 ,0x05 ,0x87 ,0x05 ,0x8C ,0x4C ,0x0A ,0x84 ,0x44 ,0x0A ,0x05 ,0x07 ,0x05 };
const unsigned char lut_vcom1[] ={ 0x01 ,0x09 ,0x23 ,0x06 ,0x04 ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 };
const unsigned char lut_red0[] ={ 0x81 ,0x49 ,0x23 ,0x46 ,0x44 ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 };
const unsigned char lut_red1[] ={ 0x01 ,0x09 ,0x23 ,0x06 ,0x04 ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 };
void lut_bw(void)
{
unsigned int count;
EPD_W21_WriteCMD(0x20);
for(count=0;count<15;count++)
{EPD_W21_WriteDATA(lut_vcom0[count]);}
EPD_W21_WriteCMD(0x21);
for(count=0;count<15;count++)
{EPD_W21_WriteDATA(lut_w[count]);}
EPD_W21_WriteCMD(0x22);
for(count=0;count<15;count++)
{EPD_W21_WriteDATA(lut_b[count]);}
EPD_W21_WriteCMD(0x23);
for(count=0;count<15;count++)
{EPD_W21_WriteDATA(lut_g1[count]);}
EPD_W21_WriteCMD(0x24);
for(count=0;count<15;count++)
{EPD_W21_WriteDATA(lut_g2[count]);}
}
void lut_red(void)
{
unsigned int count;
EPD_W21_WriteCMD(0x25);
for(count=0;count<15;count++)
{EPD_W21_WriteDATA(lut_vcom1[count]);}
EPD_W21_WriteCMD(0x26);
for(count=0;count<15;count++)
{EPD_W21_WriteDATA(lut_red0[count]); }
EPD_W21_WriteCMD(0x27);
for(count=0;count<15;count++)
{EPD_W21_WriteDATA(lut_red1[count]); }
}
LUT for GDEW042Z15
const unsigned char lut_vcomDC[] =
{
0x00 ,0x1A ,0x1A ,0x00 ,0x00 ,0x01,
0x00 ,0x0A ,0x0A ,0x00 ,0x00 ,0x08,
0x00 ,0x0E ,0x01 ,0x0E ,0x01 ,0x10,
0x00 ,0x0A ,0x0A ,0x00 ,0x00 ,0x08,
0x00 ,0x04 ,0x10 ,0x00 ,0x00 ,0x05,
0x00 ,0x03 ,0x0E ,0x00 ,0x00 ,0x0A,
0x00 ,0x23 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00
};
//R21H
const unsigned char lut_ww[] ={
0x90 ,0x1A ,0x1A ,0x00 ,0x00 ,0x01,
0x40 ,0x0A ,0x0A ,0x00 ,0x00 ,0x08,
0x84 ,0x0E ,0x01 ,0x0E ,0x01 ,0x10,
0x80 ,0x0A ,0x0A ,0x00 ,0x00 ,0x08,
0x00 ,0x04 ,0x10 ,0x00 ,0x00 ,0x05,
0x00 ,0x03 ,0x0E ,0x00 ,0x00 ,0x0A,
0x00 ,0x23 ,0x00 ,0x00 ,0x00 ,0x01
};
//R22H r
const unsigned char lut_r[] ={
0xA0 ,0x1A ,0x1A ,0x00 ,0x00 ,0x01,
0x00 ,0x0A ,0x0A ,0x00 ,0x00 ,0x08,
0x84 ,0x0E ,0x01 ,0x0E ,0x01 ,0x10,
0x90 ,0x0A ,0x0A ,0x00 ,0x00 ,0x08,
0xB0 ,0x04 ,0x10 ,0x00 ,0x00 ,0x05,
0xB0 ,0x03 ,0x0E ,0x00 ,0x00 ,0x0A,
0xC0 ,0x23 ,0x00 ,0x00 ,0x00 ,0x01
};
//R23H w
const unsigned char lut_w[] ={
0x90 ,0x1A ,0x1A ,0x00 ,0x00 ,0x01,
0x40 ,0x0A ,0x0A ,0x00 ,0x00 ,0x08,
0x84 ,0x0E ,0x01 ,0x0E ,0x01 ,0x10,
0x80 ,0x0A ,0x0A ,0x00 ,0x00 ,0x08,
0x00 ,0x04 ,0x10 ,0x00 ,0x00 ,0x05,
0x00 ,0x03 ,0x0E ,0x00 ,0x00 ,0x0A,
0x00 ,0x23 ,0x00 ,0x00 ,0x00 ,0x01
};
//R24H b
const unsigned char lut_b[] ={
0x90 ,0x1A ,0x1A ,0x00 ,0x00 ,0x01,
0x20 ,0x0A ,0x0A ,0x00 ,0x00 ,0x08,
0x84 ,0x0E ,0x01 ,0x0E ,0x01 ,0x10,
0x10 ,0x0A ,0x0A ,0x00 ,0x00 ,0x08,
0x00 ,0x04 ,0x10 ,0x00 ,0x00 ,0x05,
0x00 ,0x03 ,0x0E ,0x00 ,0x00 ,0x0A,
0x00 ,0x23 ,0x00 ,0x00 ,0x00 ,0x01
};
void lut(void)
{
unsigned int count;
SPI4W_WRITECOM(0x20);
for(count=0;count<44;count++)
{SPI4W_WRITEDATA(lut_vcomDC[count]);}
// SPI4W_WRITECOM(0x21);
// for(count=0;count<42;count++)
// {SPI4W_WRITEDATA(lut_ww[count]);}
SPI4W_WRITECOM(0x22);
for(count=0;count<42;count++)
{SPI4W_WRITEDATA(lut_r[count]);}
SPI4W_WRITECOM(0x23);
for(count=0;count<42;count++)
{SPI4W_WRITEDATA(lut_w[count]);}
SPI4W_WRITECOM(0x24);
for(count=0;count<42;count++)
{SPI4W_WRITEDATA(lut_b[count]);}
}
I do not know why GOOD DISPLAY does not send "lut_ww" :-/