# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries # SPDX-License-Identifier: MIT import board import busio import digitalio from PIL import Image, ImageDraw, ImageFont from adafruit_epd.ek79686 import Adafruit_EK79686 from adafruit_epd.epd import Adafruit_EPD from adafruit_epd.il0373 import Adafruit_IL0373 from adafruit_epd.il0398 import Adafruit_IL0398 from adafruit_epd.il91874 import Adafruit_IL91874 from adafruit_epd.jd79661 import Adafruit_JD79661 from adafruit_epd.ssd1608 import Adafruit_SSD1608 from adafruit_epd.ssd1675 import Adafruit_SSD1675 from adafruit_epd.ssd1675b import Adafruit_SSD1675B from adafruit_epd.ssd1680 import Adafruit_SSD1680 from adafruit_epd.ssd1681 import Adafruit_SSD1681 from adafruit_epd.uc8151d import Adafruit_UC8151D # create the spi device and pins we will need spi = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO) ecs = digitalio.DigitalInOut(board.D4) dc = digitalio.DigitalInOut(board.D5) srcs = None rst = digitalio.DigitalInOut(board.D6) # can be None to not use this pin busy = digitalio.DigitalInOut(board.D7) # can be None to not use this pin # give them all to our driver print("Creating display") # display = Adafruit_JD79661(122, 150, # 2.13" Quad-color display # display = Adafruit_SSD1608(200, 200, # 1.54" HD mono display # display = Adafruit_SSD1680(122, 250, # 2.13" HD Tri-color display # display = Adafruit_SSD1681(200, 200, # 1.54" HD Tri-color display # display = Adafruit_SSD1675(122, 250, # 2.13" HD mono display # display = Adafruit_IL91874(176, 264, # 2.7" Tri-color display # display = Adafruit_EK79686(176, 264, # 2.7" Tri-color display # display = Adafruit_IL0373(152, 152, # 1.54" Tri-color display # display = Adafruit_UC8151D(128, 296, # 2.9" mono flexible display # display = Adafruit_IL0373(128, 296, # 2.9" Tri-color display # display = Adafruit_IL0398(400, 300, # 4.2" Tri-color display # display = Adafruit_IL0373(104, 212, # 2.13" Tri-color display display = Adafruit_SSD1675B( 122, 250, spi, # 2.13" HD mono display (rev B) cs_pin=ecs, dc_pin=dc, sramcs_pin=srcs, rst_pin=rst, busy_pin=busy, ) # IF YOU HAVE A 2.13" FLEXIBLE DISPLAY uncomment these lines! # display.set_black_buffer(1, False) # display.set_color_buffer(1, False) # IF YOU HAVE A 2.9" FLEXIBLE DISPLAY uncomment these lines! # display.set_black_buffer(1, True) # display.set_color_buffer(1, True) display.rotation = 3 # Create blank image for drawing. # Make sure to create image with mode '1' for 1-bit color. width = display.width height = display.height image = Image.new("RGB", (width, height)) WHITE = (0xFF, 0xFF, 0xFF) YELLOW = (0xFF, 0xFF, 0x00) RED = (0xFF, 0x00, 0x00) BLACK = (0x00, 0x00, 0x00) # clear the buffer display.fill(Adafruit_EPD.WHITE) # Get drawing object to draw on image. draw = ImageDraw.Draw(image) # empty it draw.rectangle((0, 0, width, height), fill=WHITE) # Draw an outline box draw.rectangle((1, 1, width - 2, height - 2), outline=BLACK, fill=WHITE) # Draw some shapes. # First define some constants to allow easy resizing of shapes. padding = 5 shape_width = 30 top = padding bottom = height - padding # Move left to right keeping track of the current x position for drawing shapes. x = padding # Draw an ellipse. draw.ellipse((x, top, x + shape_width, bottom), outline=RED, fill=WHITE) x += shape_width + padding # Draw a rectangle. draw.rectangle((x, top, x + shape_width, bottom), outline=RED, fill=BLACK) x += shape_width + padding # Draw a triangle. draw.polygon( [(x, bottom), (x + shape_width / 2, top), (x + shape_width, bottom)], outline=BLACK, fill=RED, ) x += shape_width + padding # Draw an X. draw.line((x, bottom, x + shape_width, top), fill=RED) draw.line((x, top, x + shape_width, bottom), fill=RED) x += shape_width + padding # Load default font. font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", 20) # Alternatively load a TTF font. Make sure the .ttf font # file is in the same directory as the python script! # Some other nice fonts to try: http://www.dafont.com/bitmap.php # font = ImageFont.truetype('Minecraftia.ttf', 8) if type(display) == Adafruit_JD79661: # for quad color, test yellow fill = YELLOW else: # otherwise, text is red fill = RED # Write two lines of text. draw.text((x, top), "Hello", font=font, fill=fill) draw.text((x, top + 20), "World!", font=font, fill=fill) # Display image. display.image(image) display.display()