fix 2.9_V2 & 4.01f
This commit is contained in:
parent
49260094e6
commit
7c368a22af
65 changed files with 4803 additions and 335 deletions
|
|
@ -33,7 +33,7 @@ try:
|
|||
drawblack = ImageDraw.Draw(HBlackimage)
|
||||
drawry = ImageDraw.Draw(HRYimage)
|
||||
drawblack.text((10, 0), 'hello world', font = font24, fill = 0)
|
||||
drawblack.text((10, 20), '2.9inch e-Paper bc', font = font24, fill = 0)
|
||||
drawblack.text((10, 20), '2.66inch e-Paper b', font = font24, fill = 0)
|
||||
drawblack.text((150, 0), u'微雪电子', font = font24, fill = 0)
|
||||
drawblack.line((20, 50, 70, 100), fill = 0)
|
||||
drawblack.line((70, 50, 20, 100), fill = 0)
|
||||
|
|
|
|||
|
|
@ -19,82 +19,82 @@ try:
|
|||
logging.info("epd2in7b_V2 Demo")
|
||||
|
||||
epd = epd2in7b_V2.EPD()
|
||||
|
||||
logging.info("init and Clear")
|
||||
epd.init()
|
||||
epd.Clear()
|
||||
time.sleep(1)
|
||||
while(1) :
|
||||
logging.info("init and Clear")
|
||||
epd.init()
|
||||
epd.Clear()
|
||||
time.sleep(1)
|
||||
|
||||
# Drawing on the image
|
||||
logging.info("Drawing")
|
||||
blackimage = Image.new('1', (epd.width, epd.height), 255) # 255: clear the frame
|
||||
redimage = Image.new('1', (epd.width, epd.height), 255) # 255: clear the frame
|
||||
|
||||
font24 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 24)
|
||||
font18 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 18)
|
||||
|
||||
# Drawing on the Horizontal image
|
||||
logging.info("1.Drawing on the Horizontal image...")
|
||||
HBlackimage = Image.new('1', (epd.height, epd.width), 255) # 298*126
|
||||
HRedimage = Image.new('1', (epd.height, epd.width), 255) # 298*126
|
||||
drawblack = ImageDraw.Draw(HBlackimage)
|
||||
drawred = ImageDraw.Draw(HRedimage)
|
||||
drawblack.text((10, 0), 'hello world', font = font24, fill = 0)
|
||||
drawblack.text((10, 20), '2.7inch e-Paper', font = font24, fill = 0)
|
||||
drawblack.text((150, 0), u'微雪电子', font = font24, fill = 0)
|
||||
drawblack.line((20, 50, 70, 100), fill = 0)
|
||||
drawblack.line((70, 50, 20, 100), fill = 0)
|
||||
drawblack.rectangle((20, 50, 70, 100), outline = 0)
|
||||
drawred.line((165, 50, 165, 100), fill = 0)
|
||||
drawred.line((140, 75, 190, 75), fill = 0)
|
||||
drawred.arc((140, 50, 190, 100), 0, 360, fill = 0)
|
||||
drawred.rectangle((80, 50, 130, 100), fill = 0)
|
||||
drawred.chord((200, 50, 250, 100), 0, 360, fill = 0)
|
||||
epd.display(epd.getbuffer(HBlackimage), epd.getbuffer(HRedimage))
|
||||
time.sleep(20)
|
||||
|
||||
# Drawing on the Vertical image
|
||||
logging.info("2.Drawing on the Vertical image...")
|
||||
LBlackimage = Image.new('1', (epd.width, epd.height), 255) # 126*298
|
||||
LRedimage = Image.new('1', (epd.width, epd.height), 255) # 126*298
|
||||
drawblack = ImageDraw.Draw(LBlackimage)
|
||||
drawred = ImageDraw.Draw(LRedimage)
|
||||
|
||||
drawblack.text((2, 0), 'hello world', font = font18, fill = 0)
|
||||
drawblack.text((2, 20), '2.9inch epd', font = font18, fill = 0)
|
||||
drawblack.text((20, 50), u'微雪电子', font = font18, fill = 0)
|
||||
drawblack.line((10, 90, 60, 140), fill = 0)
|
||||
drawblack.line((60, 90, 10, 140), fill = 0)
|
||||
drawblack.rectangle((10, 90, 60, 140), outline = 0)
|
||||
drawred.line((95, 90, 95, 140), fill = 0)
|
||||
drawred.line((70, 115, 120, 115), fill = 0)
|
||||
drawred.arc((70, 90, 120, 140), 0, 360, fill = 0)
|
||||
drawred.rectangle((10, 150, 60, 200), fill = 0)
|
||||
drawred.chord((70, 150, 120, 200), 0, 360, fill = 0)
|
||||
epd.display(epd.getbuffer(LBlackimage), epd.getbuffer(LRedimage))
|
||||
time.sleep(2)
|
||||
|
||||
logging.info("3.read bmp file")
|
||||
HBlackimage = Image.open(os.path.join(picdir, '2in7b-b.bmp'))
|
||||
HRedimage = Image.open(os.path.join(picdir, '2in7b-r.bmp'))
|
||||
epd.display(epd.getbuffer(HBlackimage), epd.getbuffer(HRedimage))
|
||||
time.sleep(2)
|
||||
|
||||
logging.info("4.read bmp file on window")
|
||||
blackimage1 = Image.new('1', (epd.height, epd.width), 255) # 298*126
|
||||
redimage1 = Image.new('1', (epd.height, epd.width), 255) # 298*126
|
||||
newimage = Image.open(os.path.join(picdir, '100x100.bmp'))
|
||||
blackimage1.paste(newimage, (50,10))
|
||||
epd.display(epd.getbuffer(blackimage1), epd.getbuffer(redimage1))
|
||||
|
||||
logging.info("Clear...")
|
||||
epd.init()
|
||||
epd.Clear()
|
||||
|
||||
logging.info("Goto Sleep...")
|
||||
epd.sleep()
|
||||
|
||||
# Drawing on the image
|
||||
logging.info("Drawing")
|
||||
blackimage = Image.new('1', (epd.width, epd.height), 255) # 255: clear the frame
|
||||
redimage = Image.new('1', (epd.width, epd.height), 255) # 255: clear the frame
|
||||
|
||||
font24 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 24)
|
||||
font18 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 18)
|
||||
|
||||
# Drawing on the Horizontal image
|
||||
logging.info("1.Drawing on the Horizontal image...")
|
||||
HBlackimage = Image.new('1', (epd.height, epd.width), 255) # 298*126
|
||||
HRedimage = Image.new('1', (epd.height, epd.width), 255) # 298*126
|
||||
drawblack = ImageDraw.Draw(HBlackimage)
|
||||
drawred = ImageDraw.Draw(HRedimage)
|
||||
drawblack.text((10, 0), 'hello world', font = font24, fill = 0)
|
||||
drawblack.text((10, 20), '2.7inch e-Paper', font = font24, fill = 0)
|
||||
drawblack.text((150, 0), u'微雪电子', font = font24, fill = 0)
|
||||
drawblack.line((20, 50, 70, 100), fill = 0)
|
||||
drawblack.line((70, 50, 20, 100), fill = 0)
|
||||
drawblack.rectangle((20, 50, 70, 100), outline = 0)
|
||||
drawred.line((165, 50, 165, 100), fill = 0)
|
||||
drawred.line((140, 75, 190, 75), fill = 0)
|
||||
drawred.arc((140, 50, 190, 100), 0, 360, fill = 0)
|
||||
drawred.rectangle((80, 50, 130, 100), fill = 0)
|
||||
drawred.chord((200, 50, 250, 100), 0, 360, fill = 0)
|
||||
epd.display(epd.getbuffer(HBlackimage), epd.getbuffer(HRedimage))
|
||||
time.sleep(20)
|
||||
|
||||
# Drawing on the Vertical image
|
||||
logging.info("2.Drawing on the Vertical image...")
|
||||
LBlackimage = Image.new('1', (epd.width, epd.height), 255) # 126*298
|
||||
LRedimage = Image.new('1', (epd.width, epd.height), 255) # 126*298
|
||||
drawblack = ImageDraw.Draw(LBlackimage)
|
||||
drawred = ImageDraw.Draw(LRedimage)
|
||||
|
||||
drawblack.text((2, 0), 'hello world', font = font18, fill = 0)
|
||||
drawblack.text((2, 20), '2.9inch epd', font = font18, fill = 0)
|
||||
drawblack.text((20, 50), u'微雪电子', font = font18, fill = 0)
|
||||
drawblack.line((10, 90, 60, 140), fill = 0)
|
||||
drawblack.line((60, 90, 10, 140), fill = 0)
|
||||
drawblack.rectangle((10, 90, 60, 140), outline = 0)
|
||||
drawred.line((95, 90, 95, 140), fill = 0)
|
||||
drawred.line((70, 115, 120, 115), fill = 0)
|
||||
drawred.arc((70, 90, 120, 140), 0, 360, fill = 0)
|
||||
drawred.rectangle((10, 150, 60, 200), fill = 0)
|
||||
drawred.chord((70, 150, 120, 200), 0, 360, fill = 0)
|
||||
epd.display(epd.getbuffer(LBlackimage), epd.getbuffer(LRedimage))
|
||||
time.sleep(2)
|
||||
|
||||
logging.info("3.read bmp file")
|
||||
HBlackimage = Image.open(os.path.join(picdir, '2in7b-b.bmp'))
|
||||
HRedimage = Image.open(os.path.join(picdir, '2in7b-r.bmp'))
|
||||
epd.display(epd.getbuffer(HBlackimage), epd.getbuffer(HRedimage))
|
||||
time.sleep(2)
|
||||
|
||||
logging.info("4.read bmp file on window")
|
||||
blackimage1 = Image.new('1', (epd.height, epd.width), 255) # 298*126
|
||||
redimage1 = Image.new('1', (epd.height, epd.width), 255) # 298*126
|
||||
newimage = Image.open(os.path.join(picdir, '100x100.bmp'))
|
||||
blackimage1.paste(newimage, (50,10))
|
||||
epd.display(epd.getbuffer(blackimage1), epd.getbuffer(redimage1))
|
||||
|
||||
logging.info("Clear...")
|
||||
epd.init()
|
||||
epd.Clear()
|
||||
|
||||
logging.info("Goto Sleep...")
|
||||
epd.sleep()
|
||||
|
||||
time.sleep(3)
|
||||
time.sleep(30)
|
||||
epd.Dev_exit()
|
||||
|
||||
except IOError as e:
|
||||
|
|
|
|||
|
|
@ -67,21 +67,19 @@ class EPD:
|
|||
def ReadBusy(self):
|
||||
logging.debug("e-Paper busy")
|
||||
while(epdconfig.digital_read(self.busy_pin) == 1):
|
||||
epdconfig.delay_ms(100)
|
||||
epdconfig.delay_ms(20)
|
||||
logging.debug("e-Paper busy release")
|
||||
|
||||
def TurnOnDisplay(self):
|
||||
self.send_command(0x22) # DISPLAY_UPDATE_CONTROL_2
|
||||
self.send_data(0xF7)
|
||||
self.send_command(0x20) # MASTER_ACTIVATION
|
||||
|
||||
self.ReadBusy()
|
||||
|
||||
def TurnOnDisplayPart(self):
|
||||
self.send_command(0x22) # DISPLAY_UPDATE_CONTROL_2
|
||||
self.send_data(0xFF)
|
||||
self.send_command(0x20) # MASTER_ACTIVATION
|
||||
|
||||
self.ReadBusy()
|
||||
|
||||
def init(self):
|
||||
|
|
|
|||
|
|
@ -43,6 +43,28 @@ class EPD:
|
|||
self.width = EPD_WIDTH
|
||||
self.height = EPD_HEIGHT
|
||||
|
||||
WF_PARTIAL_2IN9 = [
|
||||
0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||
0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||
0x40,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||
0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||
0x0A,0x0,0x0,0x0,0x0,0x0,0x2,
|
||||
0x1,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||
0x1,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||
0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||
0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||
0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||
0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||
0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||
0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||
0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||
0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||
0x0,0x0,0x0,0x0,0x0,0x0,0x0,
|
||||
0x22,0x22,0x22,0x22,0x22,0x22,0x0,0x0,0x0,
|
||||
0x22,0x17,0x41,0xB0,0x32,0x36,
|
||||
]
|
||||
|
||||
# Hardware reset
|
||||
def reset(self):
|
||||
epdconfig.digital_write(self.reset_pin, 1)
|
||||
|
|
@ -78,10 +100,16 @@ class EPD:
|
|||
|
||||
def TurnOnDisplay_Partial(self):
|
||||
self.send_command(0x22) # DISPLAY_UPDATE_CONTROL_2
|
||||
self.send_data(0xFF)
|
||||
self.send_data(0x0F)
|
||||
self.send_command(0x20) # MASTER_ACTIVATION
|
||||
self.ReadBusy()
|
||||
|
||||
def SendLut(self):
|
||||
self.send_command(0x32)
|
||||
for i in range(0, 153):
|
||||
self.send_data(self.WF_PARTIAL_2IN9[i])
|
||||
self.ReadBusy()
|
||||
|
||||
def SetWindow(self, x_start, y_start, x_end, y_end):
|
||||
self.send_command(0x44) # SET_RAM_X_ADDRESS_START_END_POSITION
|
||||
# x point must be the multiple of 8 or the last 3 bits will be ignored
|
||||
|
|
@ -106,9 +134,9 @@ class EPD:
|
|||
def init(self):
|
||||
if (epdconfig.module_init() != 0):
|
||||
return -1
|
||||
# EPD hardware init start
|
||||
# EPD hardware init start
|
||||
self.reset()
|
||||
|
||||
|
||||
self.ReadBusy();
|
||||
self.send_command(0x12); #SWRESET
|
||||
self.ReadBusy();
|
||||
|
|
@ -117,22 +145,16 @@ class EPD:
|
|||
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(0x3C); #BorderWavefrom
|
||||
self.send_data(0x05);
|
||||
|
||||
self.send_command(0x21); # Display update control
|
||||
self.send_data(0x00);
|
||||
self.send_data(0x80);
|
||||
|
||||
self.send_command(0x18); #Read built-in temperature sensor
|
||||
self.send_data(0x00);
|
||||
self.send_data(0x80);
|
||||
|
||||
|
||||
self.SetCursor(0, 0);
|
||||
self.ReadBusy();
|
||||
# EPD hardware init end
|
||||
|
|
@ -195,12 +217,31 @@ class EPD:
|
|||
epdconfig.delay_ms(5)
|
||||
epdconfig.digital_write(self.reset_pin, 1)
|
||||
epdconfig.delay_ms(10)
|
||||
|
||||
self.SendLut();
|
||||
self.send_command(0x37);
|
||||
self.send_data(0x00);
|
||||
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_data(0x00);
|
||||
self.send_data(0x00);
|
||||
|
||||
self.send_command(0x3C); #BorderWavefrom
|
||||
self.send_data(0x80);
|
||||
|
||||
|
||||
self.send_command(0x22);
|
||||
self.send_data(0xC0);
|
||||
self.send_command(0x20);
|
||||
self.ReadBusy();
|
||||
|
||||
self.SetWindow(0, 0, self.width - 1, self.height - 1)
|
||||
self.SetCursor(0, 0)
|
||||
|
||||
self.send_command(0x24) # WRITE_RAM
|
||||
for j in range(0, self.height):
|
||||
for i in range(0, int(self.width / 8)):
|
||||
|
|
|
|||
|
|
@ -56,9 +56,9 @@ class EPD:
|
|||
# Hardware reset
|
||||
def reset(self):
|
||||
epdconfig.digital_write(self.reset_pin, 1)
|
||||
epdconfig.delay_ms(200)
|
||||
epdconfig.delay_ms(200)
|
||||
epdconfig.digital_write(self.reset_pin, 0)
|
||||
epdconfig.delay_ms(2)
|
||||
epdconfig.delay_ms(1)
|
||||
epdconfig.digital_write(self.reset_pin, 1)
|
||||
epdconfig.delay_ms(200)
|
||||
|
||||
|
|
@ -77,13 +77,13 @@ class EPD:
|
|||
def ReadBusyHigh(self):
|
||||
logging.debug("e-Paper busy")
|
||||
while(epdconfig.digital_read(self.busy_pin) == 0): # 0: idle, 1: busy
|
||||
epdconfig.delay_ms(100)
|
||||
epdconfig.delay_ms(10)
|
||||
logging.debug("e-Paper busy release")
|
||||
|
||||
def ReadBusyLow(self):
|
||||
logging.debug("e-Paper busy")
|
||||
while(epdconfig.digital_read(self.busy_pin) == 1): # 0: idle, 1: busy
|
||||
epdconfig.delay_ms(100)
|
||||
epdconfig.delay_ms(10)
|
||||
logging.debug("e-Paper busy release")
|
||||
|
||||
def init(self):
|
||||
|
|
@ -196,7 +196,7 @@ class EPD:
|
|||
self.ReadBusyHigh()
|
||||
self.send_command(0x02) #0x02
|
||||
self.ReadBusyLow()
|
||||
epdconfig.delay_ms(500)
|
||||
# epdconfig.delay_ms(500)
|
||||
|
||||
def Clear(self):
|
||||
self.send_command(0x61)#Set Resolution setting
|
||||
|
|
@ -222,10 +222,10 @@ class EPD:
|
|||
self.ReadBusyHigh()
|
||||
self.send_command(0x02) #0x02
|
||||
self.ReadBusyLow()
|
||||
epdconfig.delay_ms(500)
|
||||
# epdconfig.delay_ms(500)
|
||||
|
||||
def sleep(self):
|
||||
epdconfig.delay_ms(500)
|
||||
# epdconfig.delay_ms(500)
|
||||
self.send_command(0x07) # DEEP_SLEEP
|
||||
self.send_data(0XA5)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue