def ctrl_c_handler(signal, frame): print("Crtl-C Pressed. Exiting!") epdconfig.module_init() epdconfig.module_exit() exit(0) signal.signal(signal.SIGINT, ctrl_c_handler)
def __init__(self): self.reset_pin = epdconfig.RST_PIN self.dc_pin = epdconfig.DC_PIN self.busy_pin = epdconfig.BUSY_PIN self.width = EPD_WIDTH self.height = EPD_HEIGHT epdconfig.module_init()
def main(): y = json.dumps(top_headlines) x = json.loads(y) source_name = x['articles'][0]['source']['name'] source_string = "Source: " + source_name epd = epd2in13_V2.EPD() while True: try: print("Clearing EPD") epd.init(epd.FULL_UPDATE) epd.Clear(0xFF) HBlackimage = Image.new( '1', (epd2in13_V2.EPD_HEIGHT, epd2in13_V2.EPD_WIDTH), 255) print("Drawing information to EPD") drawblack = ImageDraw.Draw(HBlackimage) font20 = ImageFont.truetype('fonts/arial.ttf', 20) font10 = ImageFont.truetype('fonts/arial.ttf', 10) n_image = Image.new('1', (epd.height, epd.width), 255) n_image_draw = ImageDraw.Draw(image) epd.init(epd.FULL_UPDATE) epd.displayPartBaseImage(epd.getbuffer(n_image)) epd.init(epd.PART_UPDATE) n_image_draw.text((0, 10), source_string, font=font10, fill=0) #Begin displaying top 5 headlines articles = top_headlines['articles'] results = [] for ar in articles: results.append(ar['title']) for i in range(0, 5): n_image_draw.text((0, (35 + (i * 15))), (str(i + 1) + "." + results[i]), font=font10, fill=0) #Displays current time while (True): n_image_draw.rectangle((180, 0, 250, 30), fill=255) n_image_draw.text((180, 0), time.strftime('%H:%M'), font=font20, fill=0) epd.displayPartial(epd.getbuffer(n_image)) except IOError as e: print('traceback.format_exec():\n%s', traceback.format_exc()) epdconfig.module_init() epdconfig.module_exit() exit() time.sleep(60)
def init(self): if (epdconfig.module_init() != 0): return -1 # EPD hardware init start self.reset() self.ReadBusy() self.send_command(0x12) # SWRESET self.ReadBusy() self.send_command(0x01) # Driver output control self.send_data(0x27) self.send_data(0x01) self.send_data(0x00) self.send_command(0x11) # data entry mode self.send_data(0x03) self.SetWindow(0, 0, self.width - 1, self.height - 1) self.send_command(0x21) # Display update control self.send_data(0x00) self.send_data(0x80) self.SetCursor(0, 0) self.ReadBusy() # EPD hardware init end return 0
def init(self): if (epdconfig.module_init() != 0): return -1 # EPD hardware init start self.reset() self.send_command(0x06) # boost soft start self.send_data(0x17) self.send_data(0x17) self.send_data(0x17) self.send_command(0x04) # power on self.ReadBusy() self.send_command(0x00) # panel setting self.send_data(0x0f) # LUT from OTP,160x296 self.send_data(0x0d) # VCOM to 0V fast self.send_command(0x61) # resolution setting self.send_data(0x98) self.send_data(0x00) self.send_data(0x98) self.send_command(0x50) self.send_data(0x77)
def init(self): if (epdconfig.module_init() != 0): return -1 # EPD hardware init start self.reset() self.send_command(POWER_SETTING) self.send_data(0x07) self.send_data(0x00) self.send_data(0x08) self.send_data(0x00) self.send_command(BOOSTER_SOFT_START) self.send_data(0x07) self.send_data(0x07) self.send_data(0x07) self.send_command(POWER_ON) self.wait_until_idle() self.send_command(PANEL_SETTING) self.send_data(0xCF) self.send_command(VCOM_AND_DATA_INTERVAL_SETTING) self.send_data(0x17) self.send_command(PLL_CONTROL) self.send_data(0x39) self.send_command(TCON_RESOLUTION) self.send_data(0xC8) self.send_data(0x00) self.send_data(0xC8) self.send_command(VCM_DC_SETTING_REGISTER) self.send_data(0x0E) self.set_lut_bw() self.set_lut_red() return 0
def init(self): if (epdconfig.module_init() != 0): return -1 self.reset() self.send_command(0x04) self.ReadBusy() #waiting for the electronic paper IC to release the idle signal self.send_command(0x00) #panel setting self.send_data(0x0f) #LUT from OTP,128x296 self.send_data(0x89) #Temperature sensor, boost and other related timing settings self.send_command(0x61) #resolution setting self.send_data(0x68) self.send_data(0x00) self.send_data(0xD4) self.send_command(0X50) #VCOM AND DATA INTERVAL SETTING self.send_data(0x77) #WBmode:VBDF 17|D7 VBDW 97 VBDB 57 # WBRmode:VBDF F7 VBDW 77 VBDB 37 VBDR B7 return 0
def init(self): if (epdconfig.module_init() != 0): return -1 # EPD hardware init start self.reset() self.send_command(0x01) # POWER_SETTING self.send_data(0x07) self.send_data(0x00) self.send_data(0x08) self.send_data(0x00) self.send_command(0x06) # BOOSTER_SOFT_START self.send_data(0x07) self.send_data(0x07) self.send_data(0x07) self.send_command(0x04) # POWER_ON self.ReadBusy() self.send_command(0X00) # PANEL_SETTING self.send_data(0xCF) self.send_command(0X50) # VCOM_AND_DATA_INTERVAL_SETTING self.send_data(0x17) self.send_command(0x30) # PLL_CONTROL self.send_data(0x39) self.send_command(0x61) # TCON_RESOLUTION set x and y self.send_data(0xC8) self.send_data(0x00) self.send_data(0xC8) self.send_command(0x82) # VCM_DC_SETTING_REGISTER self.send_data(0x0E) self.set_lut_bw() self.set_lut_red() return 0
def init(self): if (epdconfig.module_init() != 0): return -1 self.reset() self.send_command(0x06) # BOOSTER_SOFT_START self.send_data(0x17) self.send_data(0x17) self.send_data(0x17) self.send_command(0x04) # POWER_ON self.ReadBusy() self.send_command(0x00) # PANEL_SETTING self.send_data(0x8F) self.send_command(0x50) # VCOM_AND_DATA_INTERVAL_SETTING self.send_data(0xF0) self.send_command(0x61) # RESOLUTION_SETTING self.send_data(self.width & 0xff) self.send_data(self.height >> 8) self.send_data(self.height & 0xff) return 0
def init(self, lut): if (epdconfig.module_init() != 0): return -1 # EPD hardware init start self.reset() self.send_command(0x01) # DRIVER_OUTPUT_CONTROL self.send_data((EPD_HEIGHT - 1) & 0xFF) self.send_data(((EPD_HEIGHT - 1) >> 8) & 0xFF) self.send_data(0x00) # GD = 0 SM = 0 TB = 0 self.send_command(0x0C) # BOOSTER_SOFT_START_CONTROL self.send_data(0xD7) self.send_data(0xD6) self.send_data(0x9D) self.send_command(0x2C) # WRITE_VCOM_REGISTER self.send_data(0xA8) # VCOM 7C self.send_command(0x3A) # SET_DUMMY_LINE_PERIOD self.send_data(0x1A) # 4 dummy lines per gate self.send_command(0x3B) # SET_GATE_TIME self.send_data(0x08) # 2us per line self.send_command(0x11) # DATA_ENTRY_MODE_SETTING self.send_data(0x03) # X increment Y increment self.send_command(0x32) # WRITE_LUT_REGISTER for i in range(0, len(lut)): self.send_data(lut[i]) # EPD hardware init end return 0
def init(self): if (epdconfig.module_init() != 0): return -1 # EPD hardware init start self.reset() self.send_command(POWER_SETTING) self.send_data(0x03) # VDS_EN, VDG_EN self.send_data(0x00) # VCOM_HV, VGHL_LV[1], VGHL_LV[0] self.send_data(0x2b) # VDH self.send_data(0x2b) # VDL self.send_data(0x09) # VDHR self.send_command(BOOSTER_SOFT_START) self.send_data(0x07) self.send_data(0x07) self.send_data(0x17) # Power optimization self.send_command(0xF8) self.send_data(0x60) self.send_data(0xA5) # Power optimization self.send_command(0xF8) self.send_data(0x89) self.send_data(0xA5) # Power optimization self.send_command(0xF8) self.send_data(0x90) self.send_data(0x00) # Power optimization self.send_command(0xF8) self.send_data(0x93) self.send_data(0x2A) # Power optimization self.send_command(0xF8) self.send_data(0xA0) self.send_data(0xA5) # Power optimization self.send_command(0xF8) self.send_data(0xA1) self.send_data(0x00) # Power optimization self.send_command(0xF8) self.send_data(0x73) self.send_data(0x41) self.send_command(PARTIAL_DISPLAY_REFRESH) self.send_data(0x00) self.send_command(POWER_ON) self.wait_until_idle() self.send_command(PANEL_SETTING) self.send_data(0xAF) # KW-BF KWR-AF BWROTP 0f self.send_command(PLL_CONTROL) self.send_data(0x3A) # 3A 100HZ 29 150Hz 39 200HZ 31 171HZ self.send_command(VCM_DC_SETTING_REGISTER) self.send_data(0x12) self.set_lut() # EPD hardware init end return 0
def ctrl_c_handler(signal, frame): print('Goodbye!') # XXX : TODO # # To preserve the life of the ePaper display, it is best not to keep it powered up - # instead putting it to sleep when done displaying, or cutting off power to it altogether. # # epdconfig.module_exit() shuts off power to the module and calls GPIO.cleanup() # The latest epd library chooses to shut off power (call module_exit) even when calling epd.sleep() # epd.sleep() calls epdconfig.module_exit(), which in turns calls cleanup(). # We can therefore end up in a situation calling GPIO.cleanup twice # # Need to cleanup Waveshare epd code to call GPIO.cleanup() only once # for now, calling epdconfig.module_init() to set up GPIO before calling module_exit to make sure # power to the ePaper display is cut off on exit # I have also modified epdconfig.py to initialize SPI handle in module_init() (vs. at the global scope) # because slepe/module_exit closes the SPI handle, which wasn't getting initialized in module_init epdconfig.module_init() epdconfig.module_exit() exit(0)
def init(self): if (epdconfig.module_init() != 0): return -1 # EPD hardware init start self.reset() self.send_command(0x01) # POWER_SETTING self.send_data(0x37) self.send_data(0x00) self.send_command(0x00) # PANEL_SETTING self.send_data(0xCF) self.send_data(0x08) self.send_command(0x06) # BOOSTER_SOFT_START self.send_data(0xc7) self.send_data(0xcc) self.send_data(0x28) self.send_command(0x04) # POWER_ON self.ReadBusy() self.send_command(0x30) # PLL_CONTROL self.send_data(0x3c) self.send_command(0x41) # TEMPERATURE_CALIBRATION self.send_data(0x00) self.send_command(0x50) # VCOM_AND_DATA_INTERVAL_SETTING self.send_data(0x77) self.send_command(0x60) # TCON_SETTING self.send_data(0x22) self.send_command(0x61) # TCON_RESOLUTION self.send_data(EPD_WIDTH >> 8) #source 640 self.send_data(EPD_WIDTH & 0xff) self.send_data(EPD_HEIGHT >> 8) #gate 384 self.send_data(EPD_HEIGHT & 0xff) self.send_command(0x82) # VCM_DC_SETTING self.send_data(0x1E) # decide by LUT file self.send_command(0xe5) # FLASH MODE self.send_data(0x03) # EPD hardware init end return 0
def init(self): if (epdconfig.module_init() != 0): return -1 self.reset() self.send_command(BOOSTER_SOFT_START) self.send_data(0x17) self.send_data(0x17) self.send_data(0x17) # 07 0f 17 1f 27 2F 37 2f self.send_command(POWER_ON) self.wait_until_idle() self.send_command(PANEL_SETTING) self.send_data(0x0F) # LUT from OTP return 0
def init(self): if (epdconfig.module_init() != 0): return -1 # EPD hardware init start self.reset() self.ReadBusy() self.send_command(0x12) # SWRESET self.ReadBusy() self.send_command(0x01) # DRIVER_OUTPUT_CONTROL self.send_data(0xC7) # (EPD_HEIGHT - 1) & 0xFF self.send_data(0x00) # ((EPD_HEIGHT - 1) >> 8) & 0xFF self.send_data(0x01) # GD = 0 SM = 0 TB = 0 self.send_command(0x11) # data entry mode self.send_data(0x01) self.send_command(0x44) # set Ram-X address start/end position self.send_data(0x00) self.send_data(0x18) # 0x0C-->(18+1)*8=200 self.send_command(0x45) # set Ram-Y address start/end position self.send_data(0xC7) # 0xC7-->(199+1)=200 self.send_data(0x00) self.send_data(0x00) self.send_data(0x00) self.send_command(0x3C) # BorderWavefrom self.send_data(0x01) self.send_command(0x18) self.send_data(0x80) self.send_command(0x22) # #Load Temperature and waveform setting. self.send_data(0XB1) self.send_command(0x20) self.send_command(0x4E) # set RAM x address count to 0; self.send_data(0x00) self.send_command(0x4F) # set RAM y address count to 0X199; self.send_data(0xC7) self.send_data(0x00) self.ReadBusy()
def init(self): if (epdconfig.module_init() != 0): return -1 self.reset() self.send_command(0x06) # BOOSTER_SOFT_START self.send_data (0x17) self.send_data (0x17) self.send_data (0x17) # 07 0f 17 1f 27 2F 37 2f self.send_command(0x04) # POWER_ON self.ReadBusy() self.send_command(0x00) # PANEL_SETTING self.send_data(0x0F) # LUT from OTP return 0
def init(self): if (epdconfig.module_init() != 0): return -1 self.reset() self.send_command(0x01) # POWER_SETTING self.send_data(0x37) self.send_data(0x00) self.send_command(0x00) # PANEL_SETTING self.send_data(0xCF) self.send_data(0x08) self.send_command(0x30) # PLL_CONTROL self.send_data(0x3A) # PLL: 0-15:0x3C, 15+:0x3A self.send_command(0x82) # VCM_DC_SETTING self.send_data(0x28) #all temperature range self.send_command(0x06) # BOOSTER_SOFT_START self.send_data(0xc7) self.send_data(0xcc) self.send_data(0x15) self.send_command(0x50) # VCOM AND DATA INTERVAL SETTING self.send_data(0x77) self.send_command(0x60) # TCON_SETTING self.send_data(0x22) self.send_command(0x65) # FLASH CONTROL self.send_data(0x00) self.send_command(0x61) # TCON_RESOLUTION self.send_data(self.width >> 8) # source 640 self.send_data(self.width & 0xff) self.send_data(self.height >> 8) # gate 384 self.send_data(self.height & 0xff) self.send_command(0xe5) # FLASH MODE self.send_data(0x03) return 0
def init(self): if (epdconfig.module_init() != 0): return -1 # EPD hardware init start self.reset() self.send_command(0x01) # POWER SETTING self.send_data(0x03) # VDS_EN, VDG_EN self.send_data(0x00) # VCOM_HV, VGHL_LV[1], VGHL_LV[0] self.send_data(0x2b) # VDH self.send_data(0x2b) # VDL self.send_command(0x06) # boost soft start self.send_data(0x17) self.send_data(0x17) self.send_data(0x17) self.send_command(0x04) # POWER_ON self.ReadBusy() self.send_command(0x00) # panel setting self.send_data(0xbf) # KW-BF KWR-AF BWROTP 0f self.send_data(0x0d) self.send_command(0x30) # PLL setting self.send_data(0x3c) # 3A 100HZ 29 150Hz 39 200HZ 31 171HZ self.send_command(0x61) # resolution setting self.send_data(0x01) self.send_data(0x90) # 128 self.send_data(0x01) self.send_data(0x2c) self.send_command(0x82) # vcom_DC setting self.send_data(0x28) self.send_command(0X50) # VCOM AND DATA INTERVAL SETTING self.send_data( 0x97 ) # 97white border 77black border VBDF 17|D7 VBDW 97 VBDB 57 VBDF F7 VBDW 77 VBDB 37 VBDR B7 self.set_lut() # EPD hardware init end return 0
def init(self): if (epdconfig.module_init() != 0): return -1 self.reset() self.send_command(POWER_SETTING) self.send_data(0x37) self.send_data(0x00) self.send_command(PANEL_SETTING) self.send_data(0xCF) self.send_data(0x08) self.send_command(PLL_CONTROL) self.send_data(0x3A) # PLL: 0-15:0x3C, 15+:0x3A self.send_command(0X82) # VCOM VOLTAGE SETTING self.send_data(0x28) # all temperature range self.send_command(0x06) # boost self.send_data(0xc7) self.send_data(0xcc) self.send_data(0x15) self.send_command(0X50) # VCOM AND DATA INTERVAL SETTING self.send_data(0x77) self.send_command(0X60) # TCON SETTING self.send_data(0x22) self.send_command(0X65) # FLASH CONTROL self.send_data(0x00) self.send_command(0x61) # tres self.send_data(0x02) # source 600 self.send_data(0x58) self.send_data(0x01) # gate 448 self.send_data(0xc0) self.send_command(0xe5) # FLASH MODE self.send_data(0x03) self.send_data(0x03) return 0
def init(self): if (epdconfig.module_init() != 0): return -1 # EPD hardware init start self.reset() self.send_command(POWER_SETTING) self.send_data(0x03) # VDS_EN, VDG_EN self.send_data(0x00) # VCOM_HV, VGHL_LV[1], VGHL_LV[0] self.send_data(0x2b) # VDH self.send_data(0x2b) # VDL self.send_command(BOOSTER_SOFT_START) self.send_data(0x17) self.send_data(0x17) self.send_data(0x17) self.send_command(POWER_ON) self.wait_until_idle() self.send_command(PANEL_SETTING) self.send_data(0xbf) # KW-BF KWR-AF BWROTP 0f self.send_data(0x0d) self.send_command(PLL_CONTROL) self.send_data(0x3c) # 3A 100HZ 29 150Hz 39 200HZ 31 171HZ self.send_command(0x61) # resolution setting self.send_data(0x01) self.send_data(0x90) # 128 self.send_data(0x01) self.send_data(0x2c) self.send_command(0x82) # vcom_DC setting self.send_data(0x28) self.send_command(0X50) # VCOM AND DATA INTERVAL SETTING self.send_data(0x97) # 97white border 77black border VBDF 17|D7 VBDW 97 VBDB 57 VBDF F7 VBDW 77 VBDB 37 VBDR B7 self.set_lut() # EPD hardware init end return 0
def init(self): if (epdconfig.module_init() != 0): return -1 self.reset() self.send_command(BOOSTER_SOFT_START) self.send_data(0x17) self.send_data(0x17) self.send_data(0x17) self.send_command(POWER_ON) self.wait_until_idle() self.send_command(PANEL_SETTING) self.send_data(0x8F) self.send_command(VCOM_AND_DATA_INTERVAL_SETTING) self.send_data(0xF0) self.send_command(RESOLUTION_SETTING) self.send_data(self.width & 0xff) self.send_data(self.height >> 8) self.send_data(self.height & 0xff) return 0
def init(self): if (epdconfig.module_init() != 0): return -1 # EPD hardware init start self.reset() self.send_command(POWER_SETTING) self.send_data(0x37) self.send_data(0x00) self.send_command(PANEL_SETTING) self.send_data(0xEF) self.send_data(0x08) self.send_command(BOOSTER_SOFT_START) self.send_data(0xc7) self.send_data(0xcc) self.send_data(0x28) self.send_command(POWER_ON) self.wait_until_idle() self.send_command(PLL_CONTROL) self.send_data(0x19) # 143Hz self.send_command(TEMPERATURE_CALIBRATION) self.send_data(0x00) self.send_command(VCOM_AND_DATA_INTERVAL_SETTING) self.send_data(0x77) self.send_command(TCON_SETTING) self.send_data(0x22) self.send_command(SPI_FLASH_CONTROL) self.send_data(0x00) self.send_command(TCON_RESOLUTION) self.send_data(0x02) #source 600 self.send_data(0x58) self.send_data(0x01) #gate 448 self.send_data(0xC0) self.send_command(VCM_DC_SETTING) self.send_data(0x28) #decide by LUT file change 1e self.send_command(0xe5) self.send_data(0x03) # EPD hardware init end return 0
def init(self): if (epdconfig.module_init() != 0): return -1 # EPD hardware init start self.reset() self.send_command(POWER_SETTING) self.send_data(0x37) self.send_data(0x00) self.send_command(PANEL_SETTING) self.send_data(0xCF) self.send_data(0x08) self.send_command(BOOSTER_SOFT_START) self.send_data(0xc7) self.send_data(0xcc) self.send_data(0x28) self.send_command(POWER_ON) self.wait_until_idle() self.send_command(PLL_CONTROL) self.send_data(0x3c) self.send_command(TEMPERATURE_CALIBRATION) self.send_data(0x00) self.send_command(VCOM_AND_DATA_INTERVAL_SETTING) self.send_data(0x77) self.send_command(TCON_SETTING) self.send_data(0x22) self.send_command(TCON_RESOLUTION) self.send_data(EPD_WIDTH >> 8) #source 640 self.send_data(EPD_WIDTH & 0xff) self.send_data(EPD_HEIGHT >> 8) #gate 384 self.send_data(EPD_HEIGHT & 0xff) self.send_command(VCM_DC_SETTING) self.send_data(0x1E) #decide by LUT file self.send_command(0xe5) #FLASH MODE self.send_data(0x03) # EPD hardware init end return 0
def init(self): if (epdconfig.module_init() != 0): return -1 # EPD hardware init start self.reset() self.send_command(BOOSTER_SOFT_START) self.send_data (0x17) self.send_data (0x17) self.send_data (0x17) self.send_command(POWER_ON) self.wait_until_idle() self.send_command(PANEL_SETTING) self.send_data(0x8F) self.send_command(VCOM_AND_DATA_INTERVAL_SETTING) self.send_data(0x77) self.send_command(TCON_RESOLUTION) self.send_data (0x80) self.send_data (0x01) self.send_data (0x28) self.send_command(VCM_DC_SETTING_REGISTER) self.send_data (0x0A) return 0
def init(self): if (epdconfig.module_init() != 0): return -1 self.reset() self.send_command(self.PowerSetting) self.send_data(0x37) self.send_data(0x00) self.send_command(self.PanelSetting) self.send_data(0xCF) self.send_data(0x08) self.send_command(self.BoosterSoftStart) self.send_data(0xc7) self.send_data(0xcc) self.send_data(0x28) self.send_command(self.PowerOn) self.wait_until_idle() self.send_command(self.PllControl) self.send_data(0x3c) self.send_command(self.TemperatureCalibration) self.send_data(0x00) self.send_command(self.VcomAndDataIntervalSetting) self.send_data(0x77) self.send_command(self.TconSetting) self.send_data(0x22) self.send_command(self.TconResolution) self.send_data(0x02) #source 640 self.send_data(0x80) self.send_data(0x01) #gate 384 self.send_data(0x80) self.send_command(self.VcmDcSetting) self.send_data(0x1E) #decide by LUT file self.send_command(0xe5) #FLASH MODE self.send_data(0x03) return 0
def init(self): if (epdconfig.module_init() != 0): return -1 # EPD hardware init start 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(0x1F) #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(0x10) self.send_data(0x07) self.send_command(0X60) #TCON SETTING self.send_data(0x22) # EPD hardware init end return 0
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 init(self): if (epdconfig.module_init() != 0): return -1 # EPD hardware init start self.reset() 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) self.send_command(0x06) #boost soft start self.send_data(0x17) #A self.send_data(0x17) #B self.send_data(0x17) #C self.send_command(0x04) self.wait_until_idle() self.send_command(0x00) #panel setting self.send_data(0xbf) # LUT from OTP,128x296 self.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 self.send_command(0x61) #resolution setting self.send_data(self.width) self.send_data((self.height >> 8) & 0xff) self.send_data(self.height & 0xff) self.send_command(0x82) #vcom_DC setting self.send_data(0x28) return 0
def init(self): if (epdconfig.module_init() != 0): return -1 # EPD hardware init start self.reset() self.send_command(0x06) # boost self.send_data(0x17) self.send_data(0x17) self.send_data(0x17) self.send_command(0x04) # POWER_ON self.ReadBusy() self.send_command(0X00) # PANEL_SETTING self.send_data(0x8F) self.send_command(0X50) # VCOM_AND_DATA_INTERVAL_SETTING self.send_data(0x77) self.send_command(0x61) # TCON_RESOLUTION self.send_data(0x80) self.send_data(0x01) self.send_data(0x28) # self.send_command(VCM_DC_SETTING_REGISTER) # self.send_data (0x0A) return 0
def init(self, update): if (epdconfig.module_init() != 0): return -1 # EPD hardware init start self.reset() if (update == self.FULL_UPDATE): self.ReadBusy() self.send_command(0x12) # soft reset self.ReadBusy() self.send_command(0x74) #set analog block control self.send_data(0x54) self.send_command(0x7E) #set digital block control self.send_data(0x3B) self.send_command(0x01) #Driver output control self.send_data(0xF9) self.send_data(0x00) self.send_data(0x00) self.send_command(0x11) #data entry mode self.send_data(0x01) self.send_command(0x44) #set Ram-X address start/end position self.send_data(0x00) self.send_data(0x0F) #0x0C-->(15+1)*8=128 self.send_command(0x45) #set Ram-Y address start/end position self.send_data(0xF9) #0xF9-->(249+1)=250 self.send_data(0x00) self.send_data(0x00) self.send_data(0x00) self.send_command(0x3C) #BorderWavefrom self.send_data(0x03) self.send_command(0x2C) #VCOM Voltage self.send_data(0x55) # self.send_command(0x03) self.send_data(self.lut_full_update[70]) self.send_command(0x04) # self.send_data(self.lut_full_update[71]) self.send_data(self.lut_full_update[72]) self.send_data(self.lut_full_update[73]) self.send_command(0x3A) #Dummy Line self.send_data(self.lut_full_update[74]) self.send_command(0x3B) #Gate time self.send_data(self.lut_full_update[75]) self.send_command(0x32) for count in range(70): self.send_data(self.lut_full_update[count]) self.send_command(0x4E) # set RAM x address count to 0 self.send_data(0x00) self.send_command(0x4F) # set RAM y address count to 0X127 self.send_data(0xF9) self.send_data(0x00) self.ReadBusy() else: self.send_command(0x2C) #VCOM Voltage self.send_data(0x26) self.ReadBusy() self.send_command(0x32) for count in range(70): self.send_data(self.lut_partial_update[count]) self.send_command(0x37) self.send_data(0x00) self.send_data(0x00) self.send_data(0x00) self.send_data(0x00) self.send_data(0x40) self.send_data(0x00) self.send_data(0x00) self.send_command(0x22) self.send_data(0xC0) self.send_command(0x20) self.ReadBusy() self.send_command(0x3C) #BorderWavefrom self.send_data(0x01) return 0