I was going to explain how we got here but. Nah. It is what it is.
#---------------------------------------------------------------epaperisslow.py
# playing around with 2.13" HD mono pi hat.
# references adafruit example code.
# screen drawing takes 9-10 seconds per update.
from datetime import datetime
def TimeString ():
return datetime.now().strftime("%H:%M")
import time
import busio
import board
from digitalio import DigitalInOut, Direction
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
from adafruit_epd.epd import Adafruit_EPD
from adafruit_epd.ssd1675b import Adafruit_SSD1675B
import math
import random
# 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.CE0) ## check back on this
dc = DigitalInOut(board.D22)
rst = DigitalInOut(board.D27)
busy = DigitalInOut(board.D17)
# give them all to our driver
display = Adafruit_SSD1675B(
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
lightimage = Image.new("RGB", (width, height))
darkimage = Image.new("RGB", (width, height))
WHITE = (0xFF, 0xFF, 0xFF)
BLACK = (0x00, 0x00, 0x00)
print("clearing display")
# clear the buffer
display.fill(Adafruit_EPD.WHITE)
# clear it out
display.display()
# Get drawing object to draw on image.
light = ImageDraw.Draw(lightimage)
dark = ImageDraw.Draw(darkimage)
# empty it
light.rectangle((0, 0, width, height), fill=WHITE)
dark.rectangle((0, 0, width, height), fill=BLACK)
print("drawing box")
# Draw an outline box
light.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
# Load default font.
font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", 80)
text_origin=(7,top+15)
light.text(text_origin, TimeString(), font=font, fill=BLACK)
dark.text(text_origin, TimeString(), font=font, fill=WHITE)
print("entering the loops")
#display.image(darkimage)
#display.display()
old_ticks = time.monotonic() - 50.0
image2display=darkimage
while True:
ticks = time.monotonic()
# if programmer is bored: move this section to an interrupt
if not switch1.value:
print("Switch 1")
image2display=lightimage
display.image(image2display)
display.display()
#No point in debouncing after the display takes 9 seconds
#while not switch1.value:
# time.sleep(0.01)
if not switch2.value:
print("Switch 2")
image2display=darkimage
display.image(image2display)
display.display()
#No point in debouncing after the display takes 9 seconds
#while not switch2.value:
# time.sleep(0.01)
# print( ticks - old_ticks)
# Update the time on both dark and light images.
if(( ticks - old_ticks) >= 50.0):
#current_time=datetime.now().strftime("%H:%M ")
print("updating "+TimeString())
light.rectangle((0, 0, width, height), fill=WHITE)
dark.rectangle((0, 0, width, height), fill=BLACK)
light.rectangle((1, 1, width - 2, height - 2), outline=BLACK, fill=WHITE)
light.text(text_origin,TimeString(),font=font, fill=BLACK)
dark.text(text_origin,TimeString(), font=font, fill=WHITE)
display.image(image2display)
display.display()
old_ticks=time.monotonic()
feurig@figaro:~/raspi-python-playground $ python3 epaperisslow.py
clearing display
drawing box
entering the loops
updating 08:06
Switch 1
Switch 2
Switch 1
updating 08:07
updating 08:08
^C
feurig@figaro:~/raspi-python-playground $ cat /etc/rc.local
#!/bin/sh -e
# turn off the on board led and start the clock
echo 0 > /sys/class/leds/led0/brightness
python3 /home/feurig/raspi-python-playground/epaperisslow.py
exit 0