def display(self, imageblack, imagered): self.send_command(0x10) for i in range(0, int(self.width / 8 * self.height)): temp1 = imageblack[i] temp2 = imagered[i] j = 0 while (j < 8): if ((temp2 & 0x80) == 0x00): temp3 = 0x04 #red elif ((temp1 & 0x80) == 0x00): temp3 = 0x00 #black else: temp3 = 0x03 #white temp3 = (temp3 << 4) & 0xFF temp1 = (temp1 << 1) & 0xFF temp2 = (temp2 << 1) & 0xFF j += 1 if ((temp2 & 0x80) == 0x00): temp3 |= 0x04 #red elif ((temp1 & 0x80) == 0x00): temp3 |= 0x00 #black else: temp3 |= 0x03 #white temp1 = (temp1 << 1) & 0xFF temp2 = (temp2 << 1) & 0xFF self.send_data(temp3) j += 1 self.send_command(0x04) # POWER ON self.ReadBusy() self.send_command(0x12) # display refresh epdconfig.delay_ms(100) self.ReadBusy()
def DisplayPartial(self, image): if (Image == None): return self.SetPartReg() self.send_command(0x91) self.send_command(0x90) self.send_data(0) self.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) self.send_command(0x10) for i in range(0, int(self.width * self.height / 8)): self.send_data(image[i]) epdconfig.delay_ms(10) self.send_command(0x13) for i in range(0, int(self.width * self.height / 8)): self.send_data(~image[i]) epdconfig.delay_ms(10) self.TurnOnDisplay()
def display(self, image): self.send_command(0x10) for i in range(0, int(self.width / 4 * self.height)): temp1 = image[i] j = 0 while (j < 4): if ((temp1 & 0xC0) == 0xC0): temp2 = 0x03 elif ((temp1 & 0xC0) == 0x00): temp2 = 0x00 else: temp2 = 0x04 temp2 = (temp2 << 4) & 0xFF temp1 = (temp1 << 2) & 0xFF j += 1 if ((temp1 & 0xC0) == 0xC0): temp2 |= 0x03 elif ((temp1 & 0xC0) == 0x00): temp2 |= 0x00 else: temp2 |= 0x04 temp1 = (temp1 << 2) & 0xFF self.send_data(temp2) j += 1 self.send_command(0x12) epdconfig.delay_ms(100) self.ReadBusy()
def ReadBusy(self): logging.debug("e-Paper busy") self.send_command(0x71) busy = epdconfig.digital_read(self.busy_pin) while (busy == 0): self.send_command(0x71) busy = epdconfig.digital_read(self.busy_pin) epdconfig.delay_ms(200)
def display(self, image): self.send_command(0x13) for i in range(0, int(self.width * self.height / 8)): self.send_data(~image[i]) self.send_command(0x12) epdconfig.delay_ms(100) self.ReadBusy()
def Sleep(self): self.send_command(0x50) self.send_data(0xf7) self.send_command(0x02) self.ReadBusy() self.send_command(0x07) self.send_data(0xA5) epdconfig.delay_ms(200) epdconfig.module_exit()
def sleep(self): self.send_command(0x22) #POWER OFF self.send_data(0xC3) self.send_command(0x20) self.send_command(0x10) #enter deep sleep self.send_data(0x01) epdconfig.delay_ms(100) epdconfig.module_exit()
def ReadBusy(self): logging.debug("e-Paper busy") self.send_command(0x71) busy = epdconfig.digital_read(self.busy_pin) busy = not (busy & 0x01) while (busy): self.send_command(0x71) busy = epdconfig.digital_read(self.busy_pin) busy = not (busy & 0x01) epdconfig.delay_ms(800) logging.debug("e-Paper busy release")
def Clear(self): self.send_command(0x10) for i in range(0, int(self.width * self.height / 8)): self.send_data(0x00) self.send_command(0x13) for i in range(0, int(self.width * self.height / 8)): self.send_data(0x00) self.send_command(0x12) epdconfig.delay_ms(100) self.ReadBusy()
def Clear(self): self.send_command(0x10) for i in range(0, int(self.width / 8 * self.height)): self.send_data(0x33) self.send_data(0x33) self.send_data(0x33) self.send_data(0x33) self.send_command(0x04) # POWER ON self.ReadBusy() self.send_command(0x12) # display refresh epdconfig.delay_ms(100) self.ReadBusy()
def display(self, image): self.send_command(0x10) for i in range(0, int(self.width * self.height / 8)): self.send_data(0x00) epdconfig.delay_ms(10) self.send_command(0x13) for i in range(0, int(self.width * self.height / 8)): self.send_data(image[i]) epdconfig.delay_ms(10) self.SetFullReg() self.TurnOnDisplay()
def Clear(self, color): self.send_command(0x10) for i in range(0, int(self.width * self.height / 8)): self.send_data(0x00) epdconfig.delay_ms(10) self.send_command(0x13) for i in range(0, int(self.width * self.height / 8)): self.send_data(0xFF) epdconfig.delay_ms(10) self.SetFullReg() self.TurnOnDisplay()
def init(self): if (epdconfig.module_init() != 0): return -1 self.reset() 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(0x04) #POWER ON epdconfig.delay_ms(100) self.ReadBusy() self.send_command(0X00) #PANNEL SETTING self.send_data(0x0F) #KW-3f KWR-2F BWROTP 0f BWOTP 1f self.send_command(0x61) #tres self.send_data(0x03) #source 800 self.send_data(0x20) self.send_data(0x01) #gate 480 self.send_data(0xE0) self.send_command(0X15) self.send_data(0x00) self.send_command(0X50) #VCOM AND DATA INTERVAL SETTING self.send_data(0x11) self.send_data(0x07) self.send_command(0X60) #TCON SETTING self.send_data(0x22) return 0
def reset(self): epdconfig.digital_write(self.reset_pin, 1) epdconfig.delay_ms(200) epdconfig.digital_write(self.reset_pin, 0) epdconfig.delay_ms(10) epdconfig.digital_write(self.reset_pin, 1) epdconfig.delay_ms(200)
def ReadBusy(self): while (epdconfig.digital_read(self.busy_pin) == 1): # 0: idle, 1: busy epdconfig.delay_ms(100)
def TurnOnDisplay(self): self.send_command(0x12) epdconfig.delay_ms(10) self.ReadBusy()
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.delay_ms(100) logging.debug("e-Paper busy release")
def display_4Gray(self, image): self.send_command(0x10) for i in range(0, 5808): #5808*4 46464 temp3 = 0 for j in range(0, 2): temp1 = image[i * 2 + j] for k in range(0, 2): temp2 = temp1 & 0xC0 if (temp2 == 0xC0): temp3 |= 0x01 #white elif (temp2 == 0x00): temp3 |= 0x00 #black elif (temp2 == 0x80): temp3 |= 0x01 #gray1 else: #0x40 temp3 |= 0x00 #gray2 temp3 <<= 1 temp1 <<= 2 temp2 = temp1 & 0xC0 if (temp2 == 0xC0): #white temp3 |= 0x01 elif (temp2 == 0x00): #black temp3 |= 0x00 elif (temp2 == 0x80): temp3 |= 0x01 #gray1 else: #0x40 temp3 |= 0x00 #gray2 if (j != 1 or k != 1): temp3 <<= 1 temp1 <<= 2 self.send_data(temp3) self.send_command(0x13) for i in range(0, 5808): #5808*4 46464 temp3 = 0 for j in range(0, 2): temp1 = image[i * 2 + j] for k in range(0, 2): temp2 = temp1 & 0xC0 if (temp2 == 0xC0): temp3 |= 0x01 #white elif (temp2 == 0x00): temp3 |= 0x00 #black elif (temp2 == 0x80): temp3 |= 0x00 #gray1 else: #0x40 temp3 |= 0x01 #gray2 temp3 <<= 1 temp1 <<= 2 temp2 = temp1 & 0xC0 if (temp2 == 0xC0): #white temp3 |= 0x01 elif (temp2 == 0x00): #black temp3 |= 0x00 elif (temp2 == 0x80): temp3 |= 0x00 #gray1 else: #0x40 temp3 |= 0x01 #gray2 if (j != 1 or k != 1): temp3 <<= 1 temp1 <<= 2 self.send_data(temp3) self.gray_SetLut() self.send_command(0x12) epdconfig.delay_ms(200) self.ReadBusy()
def ReadBusy(self): logging.debug("e-Paper busy") while (epdconfig.digital_read(self.busy_pin) == 0): epdconfig.delay_ms(100) logging.debug("e-Paper busy release")