You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
"""
Example for 2.13 inch black & white & red Waveshare 2.13B E-ink screen
Run on ESP32 Waveshare driver board (software SPI)
Adapted by Guy -- April 2019
We used the 2.13" E-paper in landscape mode
"""
# import epaper2in9
# import epaper2in9b
import epaper2in13b
from machine import Pin, SoftSPI
# software SPI on ESP32 Waveshare driver board
sck = Pin(18)
mosi = Pin(23)
cs = Pin(5)
busy = Pin(4)
rst = Pin(16)
dc = Pin(17)
miso = Pin(12) # miso is not used but must be declared. Let's take any unused gpio: 12
spi = SoftSPI(baudrate=100000, polarity=0, phase=0, sck=sck, mosi=mosi, miso=miso)
e = epaper2in13b.EPD(spi, cs, dc, rst, busy)
e.init()
h = 296; w = 128 # e-paper 2.9"
# h = 104; w = 212 # e-paper heigth and width. It will be used in landscape mode
buf_black = bytearray(w * h // 8) # used by frame buffer (landscape)
buf_red = bytearray(w * h // 8) # used by frame buffer (landscape)
buf_epaper_black = bytearray(w * h // 8) # used to display on e-paper after bytes have been
buf_epaper_red = bytearray(w * h // 8) # moved from frame buffer to match e-paper (portrait)
import framebuf
fb_black = framebuf.FrameBuffer(buf_black, w, h, framebuf.MONO_VLSB)
fb_red = framebuf.FrameBuffer(buf_red, w, h, framebuf.MONO_VLSB)
black_red = 0 # will be black on buf_black, red on buf_red
white = 1
#clear red & black screens, write in black on top left and in red bootom right
fb_black.fill(white)
fb_red.fill(white)
fb_black.text('Hello world!', 0, 0,black_red)
fb_red.text('Hello world!', 110, 90,black_red)
# Let's draw rectangles, one black one red
fb_black.fill_rect(10, 40, 75, 10, black_red)
fb_red.fill_rect(10, 60, 75, 10, black_red)
# Move frame buffer bytes to e-paper buffer to match e-paper bytes oranisation.
# That is landscape mode to portrait mode. (for red and black buffers)
x=0; y=-1; n=0; m=0
for i in range(0, 13):
for j in range(0, 212):
m = (n-x)+(n-y)*12
buf_epaper_black[m] = buf_black[n]
buf_epaper_red[m] = buf_red[n]
n +=1
x = n+i+1
y = n-1
# Now let's write text in portrait mode
fb_portrait_black = framebuf.FrameBuffer(buf_epaper_black, h, w, framebuf.MONO_HLSB)
fb_portrait_red = framebuf.FrameBuffer(buf_epaper_red, h, w, framebuf.MONO_HLSB)
fb_portrait_black.text('Micropython', 0, 0,black_red)
fb_portrait_red.text('Micropython', 15, 200,black_red)
# We can use EPD class to draw circle(not available in framebuf class)
# but only after we have moved bytes from framebuffers to e-paper buffers
e.draw_filled_circle(buf_epaper_black, 50, 110, 30, 1)
e.draw_filled_circle(buf_epaper_black, 50, 110, 20, 0)
e.draw_filled_circle(buf_epaper_red, 50, 150, 30, 1)
e.draw_filled_circle(buf_epaper_red, 50, 150, 20, 0)
print('Sending to display')
e.display_frame(buf_epaper_black, buf_epaper_red )
print('Done!.......')
e.sleep() # recommended by manufacturer to avoid damage to display
print('E-paper sleeping!...')
# also recommended by manufacturer: min. 180s between 2 refresh screen
#print('Test if sleeping: Nothing should be dispayed')
#fb_black.fill(white)
#fb_red.fill(white)
#e.display_frame(buf_black, None)
print('END')
This is the result of my code:
Does anyone have a solution?
The text was updated successfully, but these errors were encountered:
Hello.
I found working code on this page: https://forum.micropython.org/viewtopic.php?f=18&t=6319&hilit=epaper+rotate#p36068
But it only works with the resolution of 212 x 104 and then only in one corner of the e-paper.
This is how it looks:
Here is my code:
This is the result of my code:
Does anyone have a solution?
The text was updated successfully, but these errors were encountered: