Get rid of the superfluous ';'
This commit is contained in:
parent
690e23821e
commit
99f6a13540
6 changed files with 236 additions and 99 deletions
|
|
@ -263,23 +263,23 @@ void Epd::SetLut_by_host(unsigned char* lut_vcom, unsigned char* lut_ww, unsign
|
||||||
unsigned char count;
|
unsigned char count;
|
||||||
|
|
||||||
SendCommand(0x20); //VCOM
|
SendCommand(0x20); //VCOM
|
||||||
for(count=0; count<60; count++)
|
for(count=0; count<42; count++)
|
||||||
SendData(lut_vcom[count]);
|
SendData(lut_vcom[count]);
|
||||||
|
|
||||||
SendCommand(0x21); //LUTBW
|
SendCommand(0x21); //LUTBW
|
||||||
for(count=0; count<60; count++)
|
for(count=0; count<42; count++)
|
||||||
SendData(lut_ww[count]);
|
SendData(lut_ww[count]);
|
||||||
|
|
||||||
SendCommand(0x22); //LUTBW
|
SendCommand(0x22); //LUTBW
|
||||||
for(count=0; count<60; count++)
|
for(count=0; count<42; count++)
|
||||||
SendData(lut_bw[count]);
|
SendData(lut_bw[count]);
|
||||||
|
|
||||||
SendCommand(0x23); //LUTWB
|
SendCommand(0x23); //LUTWB
|
||||||
for(count=0; count<60; count++)
|
for(count=0; count<42; count++)
|
||||||
SendData(lut_wb[count]);
|
SendData(lut_wb[count]);
|
||||||
|
|
||||||
SendCommand(0x24); //LUTBB
|
SendCommand(0x24); //LUTBB
|
||||||
for(count=0; count<60; count++)
|
for(count=0; count<42; count++)
|
||||||
SendData(lut_bb[count]);
|
SendData(lut_bb[count]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -145,23 +145,23 @@ static void EPD_7IN5_V2_LUT(UBYTE* lut_vcom, UBYTE* lut_ww, UBYTE* lut_bw, UBYT
|
||||||
UBYTE count;
|
UBYTE count;
|
||||||
|
|
||||||
EPD_SendCommand(0x20); //VCOM
|
EPD_SendCommand(0x20); //VCOM
|
||||||
for(count=0; count<60; count++)
|
for(count=0; count<42; count++)
|
||||||
EPD_SendData(lut_vcom[count]);
|
EPD_SendData(lut_vcom[count]);
|
||||||
|
|
||||||
EPD_SendCommand(0x21); //LUTBW
|
EPD_SendCommand(0x21); //LUTBW
|
||||||
for(count=0; count<60; count++)
|
for(count=0; count<42; count++)
|
||||||
EPD_SendData(lut_ww[count]);
|
EPD_SendData(lut_ww[count]);
|
||||||
|
|
||||||
EPD_SendCommand(0x22); //LUTBW
|
EPD_SendCommand(0x22); //LUTBW
|
||||||
for(count=0; count<60; count++)
|
for(count=0; count<42; count++)
|
||||||
EPD_SendData(lut_bw[count]);
|
EPD_SendData(lut_bw[count]);
|
||||||
|
|
||||||
EPD_SendCommand(0x23); //LUTWB
|
EPD_SendCommand(0x23); //LUTWB
|
||||||
for(count=0; count<60; count++)
|
for(count=0; count<42; count++)
|
||||||
EPD_SendData(lut_wb[count]);
|
EPD_SendData(lut_wb[count]);
|
||||||
|
|
||||||
EPD_SendCommand(0x24); //LUTBB
|
EPD_SendCommand(0x24); //LUTBB
|
||||||
for(count=0; count<60; count++)
|
for(count=0; count<42; count++)
|
||||||
EPD_SendData(lut_bb[count]);
|
EPD_SendData(lut_bb[count]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -174,31 +174,31 @@ class EPD:
|
||||||
self.send_data(lut[158])
|
self.send_data(lut[158])
|
||||||
|
|
||||||
def SetWindows(self, Xstart, Ystart, Xend, Yend):
|
def SetWindows(self, Xstart, Ystart, Xend, Yend):
|
||||||
self.send_command(0x44); # SET_RAM_X_ADDRESS_START_END_POSITION
|
self.send_command(0x44) # SET_RAM_X_ADDRESS_START_END_POSITION
|
||||||
self.send_data((Xstart>>3) & 0xFF);
|
self.send_data((Xstart>>3) & 0xFF)
|
||||||
self.send_data((Xend>>3) & 0xFF);
|
self.send_data((Xend>>3) & 0xFF)
|
||||||
|
|
||||||
self.send_command(0x45); # SET_RAM_Y_ADDRESS_START_END_POSITION
|
self.send_command(0x45) # SET_RAM_Y_ADDRESS_START_END_POSITION
|
||||||
self.send_data(Ystart & 0xFF);
|
self.send_data(Ystart & 0xFF)
|
||||||
self.send_data((Ystart >> 8) & 0xFF);
|
self.send_data((Ystart >> 8) & 0xFF)
|
||||||
self.send_data(Yend & 0xFF);
|
self.send_data(Yend & 0xFF)
|
||||||
self.send_data((Yend >> 8) & 0xFF);
|
self.send_data((Yend >> 8) & 0xFF)
|
||||||
|
|
||||||
|
|
||||||
def SetCursor(self, Xstart, Ystart):
|
def SetCursor(self, Xstart, Ystart):
|
||||||
self.send_command(0x4E); # SET_RAM_X_ADDRESS_COUNTER
|
self.send_command(0x4E) # SET_RAM_X_ADDRESS_COUNTER
|
||||||
self.send_data(Xstart & 0xFF);
|
self.send_data(Xstart & 0xFF)
|
||||||
|
|
||||||
self.send_command(0x4F); # SET_RAM_Y_ADDRESS_COUNTER
|
self.send_command(0x4F) # SET_RAM_Y_ADDRESS_COUNTER
|
||||||
self.send_data(Ystart & 0xFF);
|
self.send_data(Ystart & 0xFF)
|
||||||
self.send_data((Ystart >> 8) & 0xFF);
|
self.send_data((Ystart >> 8) & 0xFF)
|
||||||
|
|
||||||
def init(self, isPartial):
|
def init(self, isPartial):
|
||||||
if (epdconfig.module_init() != 0):
|
if (epdconfig.module_init() != 0):
|
||||||
return -1
|
return -1
|
||||||
|
|
||||||
if(isPartial):
|
if(isPartial):
|
||||||
logging.debug("full refresh")
|
logging.debug("partial refresh")
|
||||||
self.reset()
|
self.reset()
|
||||||
self.ReadBusy()
|
self.ReadBusy()
|
||||||
|
|
||||||
|
|
@ -225,7 +225,7 @@ class EPD:
|
||||||
self.ReadBusy()
|
self.ReadBusy()
|
||||||
|
|
||||||
else:
|
else:
|
||||||
logging.debug("partial refresh")
|
logging.debug("full refresh")
|
||||||
# EPD hardware init start
|
# EPD hardware init start
|
||||||
self.reset()
|
self.reset()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -44,25 +44,47 @@ class EPD:
|
||||||
self.height = EPD_HEIGHT
|
self.height = EPD_HEIGHT
|
||||||
|
|
||||||
WF_PARTIAL_2IN9 = [
|
WF_PARTIAL_2IN9 = [
|
||||||
0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||||
0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||||
0x40,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
0x40,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||||
0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||||
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||||
0x0A,0x0,0x0,0x0,0x0,0x0,0x2,
|
0x0A,0x0,0x0,0x0,0x0,0x0,0x2,
|
||||||
0x1,0x0,0x0,0x0,0x0,0x0,0x0,
|
0x1,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||||
0x1,0x0,0x0,0x0,0x0,0x0,0x0,
|
0x1,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||||
0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||||
0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||||
0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||||
0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||||
0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||||
0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||||
0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||||
0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||||
0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||||
0x22,0x22,0x22,0x22,0x22,0x22,0x0,0x0,0x0,
|
0x22,0x22,0x22,0x22,0x22,0x22,0x0,0x0,0x0,
|
||||||
0x22,0x17,0x41,0xB0,0x32,0x36,
|
0x22,0x17,0x41,0xB0,0x32,0x36,
|
||||||
|
]
|
||||||
|
|
||||||
|
WS_20_30 = [
|
||||||
|
0x80, 0x66, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0,
|
||||||
|
0x10, 0x66, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0,
|
||||||
|
0x80, 0x66, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0,
|
||||||
|
0x10, 0x66, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x14, 0x8, 0x0, 0x0, 0x0, 0x0, 0x2,
|
||||||
|
0xA, 0xA, 0x0, 0xA, 0xA, 0x0, 0x1,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x14, 0x8, 0x0, 0x1, 0x0, 0x0, 0x1,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x0, 0x0, 0x0,
|
||||||
|
0x22, 0x17, 0x41, 0x0, 0x32, 0x36
|
||||||
]
|
]
|
||||||
|
|
||||||
# Hardware reset
|
# Hardware reset
|
||||||
|
|
@ -94,7 +116,7 @@ class EPD:
|
||||||
|
|
||||||
def TurnOnDisplay(self):
|
def TurnOnDisplay(self):
|
||||||
self.send_command(0x22) # DISPLAY_UPDATE_CONTROL_2
|
self.send_command(0x22) # DISPLAY_UPDATE_CONTROL_2
|
||||||
self.send_data(0xF7)
|
self.send_data(0xc7)
|
||||||
self.send_command(0x20) # MASTER_ACTIVATION
|
self.send_command(0x20) # MASTER_ACTIVATION
|
||||||
self.ReadBusy()
|
self.ReadBusy()
|
||||||
|
|
||||||
|
|
@ -104,12 +126,25 @@ class EPD:
|
||||||
self.send_command(0x20) # MASTER_ACTIVATION
|
self.send_command(0x20) # MASTER_ACTIVATION
|
||||||
self.ReadBusy()
|
self.ReadBusy()
|
||||||
|
|
||||||
def SendLut(self):
|
def lut(self, lut):
|
||||||
self.send_command(0x32)
|
self.send_command(0x32)
|
||||||
for i in range(0, 153):
|
for i in range(0, 153):
|
||||||
self.send_data(self.WF_PARTIAL_2IN9[i])
|
self.send_data(lut[i])
|
||||||
self.ReadBusy()
|
self.ReadBusy()
|
||||||
|
|
||||||
|
def SetLut(self, lut):
|
||||||
|
self.lut(lut)
|
||||||
|
self.send_command(0x3f)
|
||||||
|
self.send_data(lut[153])
|
||||||
|
self.send_command(0x03); # gate voltage
|
||||||
|
self.send_data(lut[154])
|
||||||
|
self.send_command(0x04); # source voltage
|
||||||
|
self.send_data(lut[155]) # VSH
|
||||||
|
self.send_data(lut[156]) # VSH2
|
||||||
|
self.send_data(lut[157]) # VSL
|
||||||
|
self.send_command(0x2c); # VCOM
|
||||||
|
self.send_data(lut[158])
|
||||||
|
|
||||||
def SetWindow(self, x_start, y_start, x_end, y_end):
|
def SetWindow(self, x_start, y_start, x_end, y_end):
|
||||||
self.send_command(0x44) # SET_RAM_X_ADDRESS_START_END_POSITION
|
self.send_command(0x44) # SET_RAM_X_ADDRESS_START_END_POSITION
|
||||||
# x point must be the multiple of 8 or the last 3 bits will be ignored
|
# x point must be the multiple of 8 or the last 3 bits will be ignored
|
||||||
|
|
@ -129,7 +164,6 @@ class EPD:
|
||||||
self.send_command(0x4F) # SET_RAM_Y_ADDRESS_COUNTER
|
self.send_command(0x4F) # SET_RAM_Y_ADDRESS_COUNTER
|
||||||
self.send_data(y & 0xFF)
|
self.send_data(y & 0xFF)
|
||||||
self.send_data((y >> 8) & 0xFF)
|
self.send_data((y >> 8) & 0xFF)
|
||||||
self.ReadBusy()
|
|
||||||
|
|
||||||
def init(self):
|
def init(self):
|
||||||
if (epdconfig.module_init() != 0):
|
if (epdconfig.module_init() != 0):
|
||||||
|
|
@ -137,26 +171,28 @@ class EPD:
|
||||||
# EPD hardware init start
|
# EPD hardware init start
|
||||||
self.reset()
|
self.reset()
|
||||||
|
|
||||||
self.ReadBusy();
|
self.ReadBusy()
|
||||||
self.send_command(0x12); #SWRESET
|
self.send_command(0x12) #SWRESET
|
||||||
self.ReadBusy();
|
self.ReadBusy()
|
||||||
|
|
||||||
self.send_command(0x01); #Driver output control
|
self.send_command(0x01) #Driver output control
|
||||||
self.send_data(0x27);
|
self.send_data(0x27)
|
||||||
self.send_data(0x01);
|
self.send_data(0x01)
|
||||||
self.send_data(0x00);
|
self.send_data(0x00)
|
||||||
|
|
||||||
self.send_command(0x11); #data entry mode
|
self.send_command(0x11) #data entry mode
|
||||||
self.send_data(0x03);
|
self.send_data(0x03)
|
||||||
|
|
||||||
self.SetWindow(0, 0, self.width-1, self.height-1);
|
self.SetWindow(0, 0, self.width-1, self.height-1)
|
||||||
|
|
||||||
self.send_command(0x21); # Display update control
|
self.send_command(0x21) # Display update control
|
||||||
self.send_data(0x00);
|
self.send_data(0x00)
|
||||||
self.send_data(0x80);
|
self.send_data(0x80)
|
||||||
|
|
||||||
self.SetCursor(0, 0);
|
self.SetCursor(0, 0)
|
||||||
self.ReadBusy();
|
self.ReadBusy()
|
||||||
|
|
||||||
|
self.SetLut(self.WS_20_30)
|
||||||
# EPD hardware init end
|
# EPD hardware init end
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
@ -218,26 +254,26 @@ class EPD:
|
||||||
epdconfig.digital_write(self.reset_pin, 1)
|
epdconfig.digital_write(self.reset_pin, 1)
|
||||||
epdconfig.delay_ms(2)
|
epdconfig.delay_ms(2)
|
||||||
|
|
||||||
self.SendLut();
|
self.SetLut(self.WF_PARTIAL_2IN9)
|
||||||
self.send_command(0x37);
|
self.send_command(0x37)
|
||||||
self.send_data(0x00);
|
self.send_data(0x00)
|
||||||
self.send_data(0x00);
|
self.send_data(0x00)
|
||||||
self.send_data(0x00);
|
self.send_data(0x00)
|
||||||
self.send_data(0x00);
|
self.send_data(0x00)
|
||||||
self.send_data(0x00);
|
self.send_data(0x00)
|
||||||
self.send_data(0x40);
|
self.send_data(0x40)
|
||||||
self.send_data(0x00);
|
self.send_data(0x00)
|
||||||
self.send_data(0x00);
|
self.send_data(0x00)
|
||||||
self.send_data(0x00);
|
self.send_data(0x00)
|
||||||
self.send_data(0x00);
|
self.send_data(0x00)
|
||||||
|
|
||||||
self.send_command(0x3C); #BorderWavefrom
|
self.send_command(0x3C) #BorderWavefrom
|
||||||
self.send_data(0x80);
|
self.send_data(0x80)
|
||||||
|
|
||||||
self.send_command(0x22);
|
self.send_command(0x22)
|
||||||
self.send_data(0xC0);
|
self.send_data(0xC0)
|
||||||
self.send_command(0x20);
|
self.send_command(0x20)
|
||||||
self.ReadBusy();
|
self.ReadBusy()
|
||||||
|
|
||||||
self.SetWindow(0, 0, self.width - 1, self.height - 1)
|
self.SetWindow(0, 0, self.width - 1, self.height - 1)
|
||||||
self.SetCursor(0, 0)
|
self.SetCursor(0, 0)
|
||||||
|
|
|
||||||
|
|
@ -44,14 +44,68 @@ class EPD:
|
||||||
self.width = EPD_WIDTH
|
self.width = EPD_WIDTH
|
||||||
self.height = EPD_HEIGHT
|
self.height = EPD_HEIGHT
|
||||||
|
|
||||||
|
Voltage_Frame_7IN5_V2 = [
|
||||||
|
0x6, 0x3F, 0x3F, 0x11, 0x24, 0x7, 0x17,
|
||||||
|
]
|
||||||
|
|
||||||
|
LUT_VCOM_7IN5_V2 = [
|
||||||
|
0x0, 0xF, 0xF, 0x0, 0x0, 0x1,
|
||||||
|
0x0, 0xF, 0x1, 0xF, 0x1, 0x2,
|
||||||
|
0x0, 0xF, 0xF, 0x0, 0x0, 0x1,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
]
|
||||||
|
|
||||||
|
LUT_WW_7IN5_V2 = [
|
||||||
|
0x10, 0xF, 0xF, 0x0, 0x0, 0x1,
|
||||||
|
0x84, 0xF, 0x1, 0xF, 0x1, 0x2,
|
||||||
|
0x20, 0xF, 0xF, 0x0, 0x0, 0x1,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
]
|
||||||
|
|
||||||
|
LUT_BW_7IN5_V2 = [
|
||||||
|
0x10, 0xF, 0xF, 0x0, 0x0, 0x1,
|
||||||
|
0x84, 0xF, 0x1, 0xF, 0x1, 0x2,
|
||||||
|
0x20, 0xF, 0xF, 0x0, 0x0, 0x1,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
]
|
||||||
|
|
||||||
|
LUT_WB_7IN5_V2 = [
|
||||||
|
0x80, 0xF, 0xF, 0x0, 0x0, 0x1,
|
||||||
|
0x84, 0xF, 0x1, 0xF, 0x1, 0x2,
|
||||||
|
0x40, 0xF, 0xF, 0x0, 0x0, 0x1,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
]
|
||||||
|
|
||||||
|
LUT_BB_7IN5_V2 = [
|
||||||
|
0x80, 0xF, 0xF, 0x0, 0x0, 0x1,
|
||||||
|
0x84, 0xF, 0x1, 0xF, 0x1, 0x2,
|
||||||
|
0x40, 0xF, 0xF, 0x0, 0x0, 0x1,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
]
|
||||||
|
|
||||||
# Hardware reset
|
# Hardware reset
|
||||||
def reset(self):
|
def reset(self):
|
||||||
epdconfig.digital_write(self.reset_pin, 1)
|
epdconfig.digital_write(self.reset_pin, 1)
|
||||||
epdconfig.delay_ms(200)
|
epdconfig.delay_ms(20)
|
||||||
epdconfig.digital_write(self.reset_pin, 0)
|
epdconfig.digital_write(self.reset_pin, 0)
|
||||||
epdconfig.delay_ms(2)
|
epdconfig.delay_ms(2)
|
||||||
epdconfig.digital_write(self.reset_pin, 1)
|
epdconfig.digital_write(self.reset_pin, 1)
|
||||||
epdconfig.delay_ms(200)
|
epdconfig.delay_ms(20)
|
||||||
|
|
||||||
def send_command(self, command):
|
def send_command(self, command):
|
||||||
epdconfig.digital_write(self.dc_pin, 0)
|
epdconfig.digital_write(self.dc_pin, 0)
|
||||||
|
|
@ -78,33 +132,73 @@ class EPD:
|
||||||
while(busy == 0):
|
while(busy == 0):
|
||||||
self.send_command(0x71)
|
self.send_command(0x71)
|
||||||
busy = epdconfig.digital_read(self.busy_pin)
|
busy = epdconfig.digital_read(self.busy_pin)
|
||||||
epdconfig.delay_ms(200)
|
epdconfig.delay_ms(20)
|
||||||
logging.debug("e-Paper busy release")
|
logging.debug("e-Paper busy release")
|
||||||
|
|
||||||
|
def SetLut(self, lut_vcom, lut_ww, lut_bw, lut_wb, lut_bb):
|
||||||
|
self.send_command(0x20)
|
||||||
|
for count in range(0, 42):
|
||||||
|
self.send_data(lut_vcom[count])
|
||||||
|
|
||||||
|
self.send_command(0x21)
|
||||||
|
for count in range(0, 42):
|
||||||
|
self.send_data(lut_ww[count])
|
||||||
|
|
||||||
|
self.send_command(0x22)
|
||||||
|
for count in range(0, 42):
|
||||||
|
self.send_data(lut_bw[count])
|
||||||
|
|
||||||
|
self.send_command(0x23)
|
||||||
|
for count in range(0, 42):
|
||||||
|
self.send_data(lut_wb[count])
|
||||||
|
|
||||||
|
self.send_command(0x24)
|
||||||
|
for count in range(0, 42):
|
||||||
|
self.send_data(lut_bb[count])
|
||||||
|
|
||||||
def init(self):
|
def init(self):
|
||||||
if (epdconfig.module_init() != 0):
|
if (epdconfig.module_init() != 0):
|
||||||
return -1
|
return -1
|
||||||
# EPD hardware init start
|
# EPD hardware init start
|
||||||
self.reset()
|
self.reset()
|
||||||
|
|
||||||
self.send_command(0x06) # btst
|
# self.send_command(0x06) # btst
|
||||||
self.send_data(0x17)
|
# self.send_data(0x17)
|
||||||
self.send_data(0x17)
|
# self.send_data(0x17)
|
||||||
self.send_data(0x28) # If an exception is displayed, try using 0x38
|
# self.send_data(0x28) # If an exception is displayed, try using 0x38
|
||||||
|
# self.send_data(0x17)
|
||||||
|
|
||||||
|
# self.send_command(0x01) #POWER SETTING
|
||||||
|
# self.send_data(0x07)
|
||||||
|
# self.send_data(0x07) #VGH=20V,VGL=-20V
|
||||||
|
# self.send_data(0x3f) #VDH=15V
|
||||||
|
# self.send_data(0x3f) #VDL=-15V
|
||||||
|
|
||||||
|
self.send_command(0x01) # power setting
|
||||||
|
self.send_data(0x17) # 1-0=11: internal power
|
||||||
|
self.send_data(self.Voltage_Frame_7IN5_V2[6]) # VGH&VGL
|
||||||
|
self.send_data(self.Voltage_Frame_7IN5_V2[1]) # VSH
|
||||||
|
self.send_data(self.Voltage_Frame_7IN5_V2[2]) # VSL
|
||||||
|
self.send_data(self.Voltage_Frame_7IN5_V2[3]) # VSHR
|
||||||
|
|
||||||
|
self.send_command(0x82) # VCOM DC Setting
|
||||||
|
self.send_data(self.Voltage_Frame_7IN5_V2[4]) # VCOM
|
||||||
|
|
||||||
|
self.send_command(0x06) # Booster Setting
|
||||||
|
self.send_data(0x27)
|
||||||
|
self.send_data(0x27)
|
||||||
|
self.send_data(0x2F)
|
||||||
self.send_data(0x17)
|
self.send_data(0x17)
|
||||||
|
|
||||||
self.send_command(0x01) #POWER SETTING
|
self.send_command(0x30) # OSC Setting
|
||||||
self.send_data(0x07)
|
self.send_data(self.Voltage_Frame_7IN5_V2[0]) # 2-0=100: N=4 5-3=111: M=7 3C=50Hz 3A=100HZ
|
||||||
self.send_data(0x07) #VGH=20V,VGL=-20V
|
|
||||||
self.send_data(0x3f) #VDH=15V
|
|
||||||
self.send_data(0x3f) #VDL=-15V
|
|
||||||
|
|
||||||
self.send_command(0x04) #POWER ON
|
self.send_command(0x04) #POWER ON
|
||||||
epdconfig.delay_ms(100)
|
epdconfig.delay_ms(100)
|
||||||
self.ReadBusy()
|
self.ReadBusy()
|
||||||
|
|
||||||
self.send_command(0X00) #PANNEL SETTING
|
self.send_command(0X00) #PANNEL SETTING
|
||||||
self.send_data(0x1F) #KW-3f KWR-2F BWROTP 0f BWOTP 1f
|
self.send_data(0x3F) #KW-3f KWR-2F BWROTP 0f BWOTP 1f
|
||||||
|
|
||||||
self.send_command(0x61) #tres
|
self.send_command(0x61) #tres
|
||||||
self.send_data(0x03) #source 800
|
self.send_data(0x03) #source 800
|
||||||
|
|
@ -122,6 +216,13 @@ class EPD:
|
||||||
self.send_command(0X60) #TCON SETTING
|
self.send_command(0X60) #TCON SETTING
|
||||||
self.send_data(0x22)
|
self.send_data(0x22)
|
||||||
|
|
||||||
|
self.send_command(0x65) # Resolution setting
|
||||||
|
self.send_data(0x00)
|
||||||
|
self.send_data(0x00) # 800*480
|
||||||
|
self.send_data(0x00)
|
||||||
|
self.send_data(0x00)
|
||||||
|
|
||||||
|
self.SetLut(self.LUT_VCOM_7IN5_V2, self.LUT_WW_7IN5_V2, self.LUT_BW_7IN5_V2, self.LUT_WB_7IN5_V2, self.LUT_BB_7IN5_V2)
|
||||||
# EPD hardware init end
|
# EPD hardware init end
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -148,23 +148,23 @@ static void EPD_7IN5_V2_LUT(UBYTE* lut_vcom, UBYTE* lut_ww, UBYTE* lut_bw, UBYT
|
||||||
UBYTE count;
|
UBYTE count;
|
||||||
|
|
||||||
EPD_SendCommand(0x20); //VCOM
|
EPD_SendCommand(0x20); //VCOM
|
||||||
for(count=0; count<60; count++)
|
for(count=0; count<42; count++)
|
||||||
EPD_SendData(lut_vcom[count]);
|
EPD_SendData(lut_vcom[count]);
|
||||||
|
|
||||||
EPD_SendCommand(0x21); //LUTBW
|
EPD_SendCommand(0x21); //LUTBW
|
||||||
for(count=0; count<60; count++)
|
for(count=0; count<42; count++)
|
||||||
EPD_SendData(lut_ww[count]);
|
EPD_SendData(lut_ww[count]);
|
||||||
|
|
||||||
EPD_SendCommand(0x22); //LUTBW
|
EPD_SendCommand(0x22); //LUTBW
|
||||||
for(count=0; count<60; count++)
|
for(count=0; count<42; count++)
|
||||||
EPD_SendData(lut_bw[count]);
|
EPD_SendData(lut_bw[count]);
|
||||||
|
|
||||||
EPD_SendCommand(0x23); //LUTWB
|
EPD_SendCommand(0x23); //LUTWB
|
||||||
for(count=0; count<60; count++)
|
for(count=0; count<42; count++)
|
||||||
EPD_SendData(lut_wb[count]);
|
EPD_SendData(lut_wb[count]);
|
||||||
|
|
||||||
EPD_SendCommand(0x24); //LUTBB
|
EPD_SendCommand(0x24); //LUTBB
|
||||||
for(count=0; count<60; count++)
|
for(count=0; count<42; count++)
|
||||||
EPD_SendData(lut_bb[count]);
|
EPD_SendData(lut_bb[count]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue