Пример #1
0
    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()
Пример #2
0
    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()
Пример #3
0
 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)
Пример #4
0
    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()
Пример #5
0
    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()
Пример #6
0
    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()
Пример #7
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
Пример #8
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();
Пример #9
0
 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();
Пример #10
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)
Пример #11
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(
         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)
Пример #12
0
 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")
Пример #13
0
    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()
Пример #14
0
 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)
Пример #15
0
 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)