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 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 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 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 Clear(self): self.send_command(0x4F); self.send_data(0xAf); self.send_command(0x24) for i in range(0, int(self.width * self.height / 8)): self.send_data(0xff); self.send_command(0x26) for i in range(0, int(self.width * self.height / 8)): self.send_data(0x00); self.send_command(0x22); self.send_data(0xC7); #Load LUT from MCU(0x32) self.send_command(0x20); epdconfig.delay_ms(200); #!!!The delay here is necessary, 200uS at least!!! self.ReadBusy();
def display(self, imageblack, imagered): self.send_command(0x4F); self.send_data(0xAf); self.send_command(0x24) for i in range(0, int(self.width * self.height / 8)): self.send_data(imageblack[i]); self.send_command(0x26) for i in range(0, int(self.width * self.height / 8)): self.send_data(~imagered[i]); self.send_command(0x22); self.send_data(0xC7); #Load LUT from MCU(0x32) self.send_command(0x20); epdconfig.delay_ms(200); #!!!The delay here is necessary, 200uS at least!!! self.ReadBusy();
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 reset(self): epdconfig.digital_write(self.reset_pin, 1) epdconfig.delay_ms(200) epdconfig.digital_write(self.reset_pin, 0) epdconfig.delay_ms( 5 ) # support v2 displays in favor of v1 displays.Change this to 10 for legacy v1 display support epdconfig.digital_write(self.reset_pin, 1) epdconfig.delay_ms(200)
def ReadBusy(self): logging.debug("e-Paper busy") while (epdconfig.digital_read(self.busy_pin) == 0): # 0: idle, 1: busy epdconfig.delay_ms(100) logging.debug("e-Paper busy release")
def display_4Gray(self, image): self.send_command(0x10) for i in range(0, EPD_WIDTH * EPD_HEIGHT / 8): # EPD_WIDTH * EPD_HEIGHT / 4 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, EPD_WIDTH * EPD_HEIGHT / 8): #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): self.send_command(0x71) while (epdconfig.digital_read(self.busy_pin) == 0): # 0: idle, 1: busy self.send_command(0x71) epdconfig.delay_ms(100)
def ReadBusy(self): logging.debug("e-Paper busy") busy = epdconfig.digital_read(self.busy_pin) while(busy == 1): busy = epdconfig.digital_read(self.busy_pin) epdconfig.delay_ms(200)