zero-vcard/py_examples/vcard.py
2023-10-09 19:24:09 +02:00

154 lines
6.1 KiB
Python

#!/usr/bin/python
# -*- coding:utf-8 -*-
import sys
import os
picdir = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'pic')
libdir = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'lib')
if os.path.exists(libdir):
sys.path.append(libdir)
import logging
from waveshare_epd import epd2in13_V2
import time
from PIL import Image,ImageDraw,ImageFont
import traceback
logging.basicConfig(level=logging.DEBUG)
min_x=0
max_x=249
min_y=0
max_y=121
print_pause=10
try:
logging.info("vCARD startup")
epd = epd2in13_V2.EPD()
logging.info("init and Clear")
epd.init(epd.FULL_UPDATE)
epd.Clear(0xFF)
time.sleep(0.5)
logging.info("clear frame")
image = Image.new('1', (epd.height, epd.width), 255) # 255: clear the frame
draw = ImageDraw.Draw(image)
time.sleep(0.5)
logging.info("update frame")
epd.init(epd.FULL_UPDATE)
epd.Clear(0xFF)
time.sleep(0.5)
# Settings FONTS
font15 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 15)
font20 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 20)
font25 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 25)
font30 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 30)
font35 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 35)
font45 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 45)
font50 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 60)
image = Image.new('1', (epd.height, epd.width), 255) # 255: clear the frame
draw = ImageDraw.Draw(image)
draw.rectangle([(min_x,min_y),(40,40)], outline = 0) #emtpy rectangle
draw.line([(min_x,min_y),(40,40)], fill = 0,width = 1)
draw.line([(min_x,40),(40,min_y)], fill = 0,width = 1)
draw.rectangle([(45,min_y),(85,40)],fill = 0) #filled rectangle
draw.chord((90, min_y, 130, 40), 0, 360, fill = 0) #filled circle
draw.ellipse((135, min_y, 175, 40), outline = 0)
draw.pieslice((135, min_y, 175, 40), 90, 180, outline = 0)
draw.pieslice((135, min_y, 175, 40), 270, 360, fill = 0)
draw.line([(min_x,max_y-60),(min_x,max_y)], fill = 0,width = 1)
draw.line([(min_x+4,max_y-50),(min_x+4,max_y)], fill = 0,width = 1)
draw.line([(min_x+8,max_y-30),(min_x+8,max_y)], fill = 0,width = 1)
draw.line([(min_x+12,max_y-10),(min_x+12,max_y)], fill = 0,width = 1)
draw.line([(max_x,min_y),(max_x,max_y)], fill = 0,width = 1)
draw.line([(max_x-4,min_y),(max_x-4,max_y/2)], fill = 0,width = 1)
draw.line([(max_x-8,min_y),(max_x-8,max_y/3)], fill = 0,width = 1)
draw.line([(max_x-12,min_y),(max_x-12,max_y/4)], fill = 0,width = 1)
draw.line([(max_x-16,min_y),(max_x-16,max_y/5)], fill = 0,width = 1)
draw.line([(max_x-20,min_y),(max_x-20,max_y/6)], fill = 0,width = 1)
draw.text((20, 40), 'e-Paper vCard', font = font25, fill = 0)
draw.text((30, 70), 'by WieErWill', font = font35, fill = 0)
epd.display(epd.getbuffer(image))
time.sleep(3)
while True:
# clear the frame
image = Image.new('1', (epd.height, epd.width), 255)
draw = ImageDraw.Draw(image)
draw.rectangle([(min_x,min_y),(max_x,max_y)], outline = 0) #emtpy rectangle
draw.rectangle([(min_x+3,min_y+3),(max_x-3,max_y-3)], outline = 0) #emtpy rectangle
draw.text((10, 10), 'Robert Jeutter', font = font35, fill = 0)
draw.text((10, 60), 'Software Engineer', font = font25, fill = 0)
draw.text((10, 85), 'working @ AraCom', font = font25, fill = 0)
epd.display(epd.getbuffer(image))
time.sleep(print_pause)
image = Image.new('1', (epd.height, epd.width), 255)
draw = ImageDraw.Draw(image)
draw.text((2, 5), 'Social Robotics', font = font35, fill = 0)
draw.text((2, 50), 'Machine Learning &', font = font25, fill = 0)
draw.text((2, 85), 'Human-Machine-Coop', font = font20, fill = 0)
epd.display(epd.getbuffer(image))
time.sleep(print_pause)
# clear the frame
imageARA = Image.new('1', (epd.height, epd.width), 255)
#bmp = Image.open(os.path.join(picdir, 'ara.bmp'))
#bmp2 = bmp.resize((250,100))
#imageARA.paste(bmp, (2,5))
draw = ImageDraw.Draw(imageARA)
draw.text((15, 5), 'AraCom', font = font50, fill = 0)
draw.text((13, 65), 'IT Services GmbH', font = font30, fill = 0)
draw.text((14, 100), 'Mail: robert.jeutter@aracom.de', font = font15, fill = 0)
epd.display(epd.getbuffer(imageARA))
time.sleep(print_pause)
# clear the frame
epd.init(epd.FULL_UPDATE)
image = Image.new('1', (epd.height, epd.width), 255)
draw = ImageDraw.Draw(image)
draw.text((50, 5), 'Write me', font = font25, fill = 0)
draw.text((20, 35), 'robert.jeutter', font = font35, fill = 0)
draw.text((20, 70), '@aracom.de', font = font35, fill = 0)
epd.display(epd.getbuffer(image))
time.sleep(print_pause)
# clear the frame
epd.init(epd.FULL_UPDATE)
image = Image.new('1', (epd.height, epd.width), 255)
draw = ImageDraw.Draw(image)
draw.text((25, 2), 'find me on', font = font25, fill = 0)
draw.text((15, 25), 'GitHub.com/', font = font35, fill = 0)
draw.text((20, 60), 'WieErWill', font = font45, fill = 0)
epd.display(epd.getbuffer(image))
time.sleep(print_pause)
imageQR = Image.new('1', (epd.height, epd.width), 255) # 255: clear the frame
bmp = Image.open(os.path.join(picdir, 'qr.bmp'))
imageQR.paste(bmp, (2,2))
draw = ImageDraw.Draw(imageQR)
draw.text((130, 5), 'SCAN ME', font = font25, fill = 0)
draw.text((140, 45), '\(0^0)/', font = font25, fill = 0)
draw.text((130, 90), 'SCAN ME', font = font25, fill = 0)
epd.display(epd.getbuffer(imageQR))
time.sleep(print_pause)
# set display to sleep mode
epd.init(epd.FULL_UPDATE)
epd.Clear(0xFF)
epd.sleep()
time.sleep(print_pause)
except IOError as e:
logging.info(e)
except KeyboardInterrupt:
logging.info("ctrl + c:")
epd2in13_V2.epdconfig.module_exit()
exit()