예제 #1
0
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)
예제 #2
0
 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()
예제 #3
0
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)
예제 #4
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(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
예제 #5
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)
예제 #6
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(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
예제 #7
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
예제 #8
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
예제 #9
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
예제 #10
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
예제 #11
0
파일: epd2in7.py 프로젝트: wdowner/e-Paper
    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)
예제 #13
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
예제 #14
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
예제 #15
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()
예제 #16
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) # 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
예제 #17
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
예제 #18
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
예제 #19
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
예제 #20
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
예제 #21
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
예제 #22
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
예제 #23
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
예제 #24
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
예제 #25
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
예제 #28
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
예제 #29
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
예제 #30
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