116 lines
3.3 KiB
Python
116 lines
3.3 KiB
Python
# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
import time
|
|
|
|
import board
|
|
import busio
|
|
from digitalio import DigitalInOut, Direction
|
|
from PIL import Image, ImageDraw, ImageFont
|
|
|
|
from adafruit_epd.epd import Adafruit_EPD
|
|
from adafruit_epd.ssd1675b import Adafruit_SSD1675B
|
|
from adafruit_epd.ssd1680 import Adafruit_SSD1680, Adafruit_SSD1680Z
|
|
|
|
# create two buttons
|
|
switch1 = DigitalInOut(board.D6)
|
|
switch2 = DigitalInOut(board.D5)
|
|
switch1.direction = Direction.INPUT
|
|
switch2.direction = Direction.INPUT
|
|
|
|
# create the spi device and pins we will need
|
|
spi = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO)
|
|
ecs = DigitalInOut(board.D8)
|
|
dc = DigitalInOut(board.D22)
|
|
rst = DigitalInOut(board.D27)
|
|
busy = DigitalInOut(board.D17)
|
|
|
|
# give them all to our driver
|
|
#display = Adafruit_SSD1675B( # Oldest 2.13" Bonnet
|
|
#display = Adafruit_SSD1680( # Old 2.13" Bonnet
|
|
display = Adafruit_SSD1680Z( # Newer 2.13" mono display
|
|
122,
|
|
250,
|
|
spi, # 2.13" HD mono display (rev B)
|
|
cs_pin=ecs,
|
|
dc_pin=dc,
|
|
sramcs_pin=None,
|
|
rst_pin=rst,
|
|
busy_pin=busy,
|
|
)
|
|
display.rotation = 1
|
|
|
|
# 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)
|
|
BLACK = (0x00, 0x00, 0x00)
|
|
|
|
# clear the buffer
|
|
display.fill(Adafruit_EPD.WHITE)
|
|
# clear it out
|
|
display.display()
|
|
|
|
# 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=BLACK, fill=WHITE)
|
|
x += SHAPE_WIDTH + PADDING
|
|
# Draw a rectangle.
|
|
draw.rectangle((x, TOP, x + SHAPE_WIDTH, bottom), outline=WHITE, 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=WHITE,
|
|
)
|
|
x += SHAPE_WIDTH + PADDING
|
|
# Draw an X.
|
|
draw.line((x, bottom, x + SHAPE_WIDTH, TOP), fill=BLACK)
|
|
draw.line((x, TOP, x + SHAPE_WIDTH, bottom), fill=BLACK)
|
|
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)
|
|
|
|
# Write two lines of text.
|
|
draw.text((x, TOP), "Hello", font=font, fill=BLACK)
|
|
draw.text((x, TOP + 20), "World!", font=font, fill=BLACK)
|
|
|
|
while True:
|
|
if not switch1.value:
|
|
print("Switch 1")
|
|
display.image(image)
|
|
display.display()
|
|
while not switch1.value:
|
|
time.sleep(0.01)
|
|
if not switch2.value:
|
|
print("Switch 2")
|
|
blinkaimage = Image.open("epd_bonnet_blinka_250x122.bmp")
|
|
display.image(blinkaimage)
|
|
display.display()
|
|
while not switch2.value:
|
|
time.sleep(0.01)
|
|
time.sleep(0.01)
|