Consolidate repeated functions
This commit is contained in:
parent
e51fcad444
commit
c586f8d0f7
38 changed files with 2001 additions and 2881 deletions
|
|
@ -39,10 +39,7 @@ EPD_HEIGHT = 212
|
|||
|
||||
class EPD:
|
||||
def __init__(self):
|
||||
self.reset_pin = epdconfig.RST_PIN
|
||||
self.dc_pin = epdconfig.DC_PIN
|
||||
self.busy_pin = epdconfig.BUSY_PIN
|
||||
self.cs_pin = epdconfig.CS_PIN
|
||||
self.width = EPD_WIDTH
|
||||
self.height = EPD_HEIGHT
|
||||
|
||||
|
|
@ -146,38 +143,17 @@ class EPD:
|
|||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
]
|
||||
|
||||
# Hardware reset
|
||||
def reset(self):
|
||||
epdconfig.digital_write(self.reset_pin, 1)
|
||||
epdconfig.delay_ms(200)
|
||||
epdconfig.digital_write(self.reset_pin, 0)
|
||||
epdconfig.delay_ms(5)
|
||||
epdconfig.digital_write(self.reset_pin, 1)
|
||||
epdconfig.delay_ms(200)
|
||||
|
||||
def send_command(self, command):
|
||||
epdconfig.digital_write(self.dc_pin, 0)
|
||||
epdconfig.digital_write(self.cs_pin, 0)
|
||||
epdconfig.spi_writebyte([command])
|
||||
epdconfig.digital_write(self.cs_pin, 1)
|
||||
|
||||
def send_data(self, data):
|
||||
epdconfig.digital_write(self.dc_pin, 1)
|
||||
epdconfig.digital_write(self.cs_pin, 0)
|
||||
epdconfig.spi_writebyte([data])
|
||||
epdconfig.digital_write(self.cs_pin, 1)
|
||||
]
|
||||
|
||||
def ReadBusy(self):
|
||||
logging.debug("e-Paper busy")
|
||||
while(epdconfig.digital_read(self.busy_pin) == 0): # 0: idle, 1: busy
|
||||
self.send_command(0x71)
|
||||
epdconfig.send_command(0x71)
|
||||
epdconfig.delay_ms(100)
|
||||
logging.debug("e-Paper busy release")
|
||||
|
||||
def TurnOnDisplay(self):
|
||||
self.send_command(0x12)
|
||||
epdconfig.send_command(0x12)
|
||||
epdconfig.delay_ms(100)
|
||||
self.ReadBusy()
|
||||
|
||||
|
|
@ -185,82 +161,82 @@ class EPD:
|
|||
if (epdconfig.module_init() != 0):
|
||||
return -1
|
||||
# EPD hardware init start
|
||||
self.reset()
|
||||
epdconfig.reset(200, 5, 200)
|
||||
|
||||
self.send_command(0x01) # POWER SETTING
|
||||
self.send_data(0x03)
|
||||
self.send_data(0x00)
|
||||
self.send_data(0x2b)
|
||||
self.send_data(0x2b)
|
||||
self.send_data(0x03)
|
||||
epdconfig.send_command(0x01) # POWER SETTING
|
||||
epdconfig.send_data(0x03)
|
||||
epdconfig.send_data(0x00)
|
||||
epdconfig.send_data(0x2b)
|
||||
epdconfig.send_data(0x2b)
|
||||
epdconfig.send_data(0x03)
|
||||
|
||||
self.send_command(0x06) # boost soft start
|
||||
self.send_data(0x17) # A
|
||||
self.send_data(0x17) # B
|
||||
self.send_data(0x17) # C
|
||||
epdconfig.send_command(0x06) # boost soft start
|
||||
epdconfig.send_data(0x17) # A
|
||||
epdconfig.send_data(0x17) # B
|
||||
epdconfig.send_data(0x17) # C
|
||||
|
||||
self.send_command(0x04)
|
||||
epdconfig.send_command(0x04)
|
||||
self.ReadBusy()
|
||||
|
||||
self.send_command(0x00) # panel setting
|
||||
self.send_data(0xbf) # LUT from OTP,128x296
|
||||
self.send_data(0x0d) # VCOM to 0V fast
|
||||
epdconfig.send_command(0x00) # panel setting
|
||||
epdconfig.send_data(0xbf) # LUT from OTP,128x296
|
||||
epdconfig.send_data(0x0d) # VCOM to 0V fast
|
||||
|
||||
self.send_command(0x30) # PLL setting
|
||||
self.send_data(0x3a) # 3a 100HZ 29 150Hz 39 200HZ 31 171HZ
|
||||
epdconfig.send_command(0x30) # PLL setting
|
||||
epdconfig.send_data(0x3a) # 3a 100HZ 29 150Hz 39 200HZ 31 171HZ
|
||||
|
||||
self.send_command(0x61) # resolution setting
|
||||
self.send_data(self.width)
|
||||
self.send_data((self.height >> 8) & 0xff)
|
||||
self.send_data(self.height& 0xff)
|
||||
epdconfig.send_command(0x61) # resolution setting
|
||||
epdconfig.send_data(self.width)
|
||||
epdconfig.send_data((self.height >> 8) & 0xff)
|
||||
epdconfig.send_data(self.height& 0xff)
|
||||
|
||||
self.send_command(0x82) # vcom_DC setting
|
||||
self.send_data(0x28)
|
||||
epdconfig.send_command(0x82) # vcom_DC setting
|
||||
epdconfig.send_data(0x28)
|
||||
return 0
|
||||
|
||||
def SetFullReg(self):
|
||||
self.send_command(0x82)
|
||||
self.send_data(0x00)
|
||||
self.send_command(0X50)
|
||||
self.send_data(0x97)
|
||||
epdconfig.send_command(0x82)
|
||||
epdconfig.send_data(0x00)
|
||||
epdconfig.send_command(0X50)
|
||||
epdconfig.send_data(0x97)
|
||||
|
||||
self.send_command(0x20) # vcom
|
||||
epdconfig.send_command(0x20) # vcom
|
||||
for count in range(0, 44):
|
||||
self.send_data(self.lut_vcomDC[count])
|
||||
self.send_command(0x21) # ww --
|
||||
epdconfig.send_data(self.lut_vcomDC[count])
|
||||
epdconfig.send_command(0x21) # ww --
|
||||
for count in range(0, 42):
|
||||
self.send_data(self.lut_ww[count])
|
||||
self.send_command(0x22) # bw r
|
||||
epdconfig.send_data(self.lut_ww[count])
|
||||
epdconfig.send_command(0x22) # bw r
|
||||
for count in range(0, 42):
|
||||
self.send_data(self.lut_bw[count])
|
||||
self.send_command(0x23) # wb w
|
||||
epdconfig.send_data(self.lut_bw[count])
|
||||
epdconfig.send_command(0x23) # wb w
|
||||
for count in range(0, 42):
|
||||
self.send_data(self.lut_wb[count])
|
||||
self.send_command(0x24) # bb b
|
||||
epdconfig.send_data(self.lut_wb[count])
|
||||
epdconfig.send_command(0x24) # bb b
|
||||
for count in range(0, 42):
|
||||
self.send_data(self.lut_bb[count])
|
||||
epdconfig.send_data(self.lut_bb[count])
|
||||
|
||||
def SetPartReg(self):
|
||||
self.send_command(0x82)
|
||||
self.send_data(0x03)
|
||||
self.send_command(0X50)
|
||||
self.send_data(0x47)
|
||||
epdconfig.send_command(0x82)
|
||||
epdconfig.send_data(0x03)
|
||||
epdconfig.send_command(0X50)
|
||||
epdconfig.send_data(0x47)
|
||||
|
||||
self.send_command(0x20) # vcom
|
||||
epdconfig.send_command(0x20) # vcom
|
||||
for count in range(0, 44):
|
||||
self.send_data(self.lut_vcom1[count])
|
||||
self.send_command(0x21) # ww --
|
||||
epdconfig.send_data(self.lut_vcom1[count])
|
||||
epdconfig.send_command(0x21) # ww --
|
||||
for count in range(0, 42):
|
||||
self.send_data(self.lut_ww1[count])
|
||||
self.send_command(0x22) # bw r
|
||||
epdconfig.send_data(self.lut_ww1[count])
|
||||
epdconfig.send_command(0x22) # bw r
|
||||
for count in range(0, 42):
|
||||
self.send_data(self.lut_bw1[count])
|
||||
self.send_command(0x23) # wb w
|
||||
epdconfig.send_data(self.lut_bw1[count])
|
||||
epdconfig.send_command(0x23) # wb w
|
||||
for count in range(0, 42):
|
||||
self.send_data(self.lut_wb1[count])
|
||||
self.send_command(0x24) # bb b
|
||||
epdconfig.send_data(self.lut_wb1[count])
|
||||
epdconfig.send_command(0x24) # bb b
|
||||
for count in range(0, 42):
|
||||
self.send_data(self.lut_bb1[count])
|
||||
epdconfig.send_data(self.lut_bb1[count])
|
||||
|
||||
def getbuffer(self, image):
|
||||
# logging.debug("bufsiz = ",int(self.width/8) * self.height)
|
||||
|
|
@ -290,14 +266,14 @@ class EPD:
|
|||
if (Image == None):
|
||||
return
|
||||
|
||||
self.send_command(0x10)
|
||||
epdconfig.send_command(0x10)
|
||||
for i in range(0, int(self.width * self.height / 8)):
|
||||
self.send_data(0x00)
|
||||
epdconfig.send_data(0x00)
|
||||
epdconfig.delay_ms(10)
|
||||
|
||||
self.send_command(0x13)
|
||||
epdconfig.send_command(0x13)
|
||||
for i in range(0, int(self.width * self.height / 8)):
|
||||
self.send_data(image[i])
|
||||
epdconfig.send_data(image[i])
|
||||
epdconfig.delay_ms(10)
|
||||
|
||||
self.SetFullReg()
|
||||
|
|
@ -307,50 +283,50 @@ class EPD:
|
|||
if (Image == None):
|
||||
return
|
||||
|
||||
self.send_command(0x91)
|
||||
self.send_command(0x90)
|
||||
self.send_data(0)
|
||||
self.send_data(self.width - 1)
|
||||
epdconfig.send_command(0x91)
|
||||
epdconfig.send_command(0x90)
|
||||
epdconfig.send_data(0)
|
||||
epdconfig.send_data(self.width - 1)
|
||||
|
||||
self.send_data(0)
|
||||
self.send_data(0)
|
||||
self.send_data(int(self.height / 256))
|
||||
self.send_data(self.height % 256 - 1)
|
||||
self.send_data(0x28)
|
||||
epdconfig.send_data(0)
|
||||
epdconfig.send_data(0)
|
||||
epdconfig.send_data(int(self.height / 256))
|
||||
epdconfig.send_data(self.height % 256 - 1)
|
||||
epdconfig.send_data(0x28)
|
||||
|
||||
self.send_command(0x10)
|
||||
epdconfig.send_command(0x10)
|
||||
for i in range(0, int(self.width * self.height / 8)):
|
||||
self.send_data(image[i])
|
||||
epdconfig.send_data(image[i])
|
||||
epdconfig.delay_ms(10)
|
||||
|
||||
self.send_command(0x13)
|
||||
epdconfig.send_command(0x13)
|
||||
for i in range(0, int(self.width * self.height / 8)):
|
||||
self.send_data(~image[i])
|
||||
epdconfig.send_data(~image[i])
|
||||
epdconfig.delay_ms(10)
|
||||
|
||||
self.SetPartReg()
|
||||
self.TurnOnDisplay()
|
||||
|
||||
def Clear(self, color):
|
||||
self.send_command(0x10)
|
||||
epdconfig.send_command(0x10)
|
||||
for i in range(0, int(self.width * self.height / 8)):
|
||||
self.send_data(0x00)
|
||||
epdconfig.send_data(0x00)
|
||||
epdconfig.delay_ms(10)
|
||||
|
||||
self.send_command(0x13)
|
||||
epdconfig.send_command(0x13)
|
||||
for i in range(0, int(self.width * self.height / 8)):
|
||||
self.send_data(0xFF)
|
||||
epdconfig.send_data(0xFF)
|
||||
epdconfig.delay_ms(10)
|
||||
|
||||
self.SetFullReg()
|
||||
self.TurnOnDisplay()
|
||||
|
||||
def sleep(self):
|
||||
self.send_command(0X50)
|
||||
self.send_data(0xf7)
|
||||
self.send_command(0X02) # power off
|
||||
self.send_command(0X07) # deep sleep
|
||||
self.send_data(0xA5)
|
||||
epdconfig.send_command(0X50)
|
||||
epdconfig.send_data(0xf7)
|
||||
epdconfig.send_command(0X02) # power off
|
||||
epdconfig.send_command(0X07) # deep sleep
|
||||
epdconfig.send_data(0xA5)
|
||||
|
||||
epdconfig.delay_ms(2000)
|
||||
epdconfig.module_exit()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue