69 lines
1.5 KiB
Python
69 lines
1.5 KiB
Python
from picographics import PicoGraphics, DISPLAY_TUFTY_2040
|
|
|
|
display = PicoGraphics(display=DISPLAY_TUFTY_2040)
|
|
WIDTH, HEIGHT = display.get_bounds()
|
|
display.set_backlight(1.0)
|
|
|
|
# Tufty constants
|
|
A = 7
|
|
B = 8
|
|
C = 15
|
|
UP = 22
|
|
DOWN = 6
|
|
LED = 25
|
|
|
|
WHITE = display.create_pen(255, 255, 255)
|
|
BLACK = display.create_pen(0, 0, 0)
|
|
RED = display.create_pen(200, 0, 0)
|
|
|
|
# Read name from file
|
|
try:
|
|
file = open("badge.txt", "r")
|
|
name = file.readline()
|
|
file.close()
|
|
except OSError:
|
|
name = "open name.txt in thonny to edit badge :)"
|
|
|
|
|
|
text_size = 12
|
|
text_x = 0
|
|
text_y = 100
|
|
|
|
# Clear the screen
|
|
display.set_pen(WHITE)
|
|
display.clear()
|
|
display.update()
|
|
|
|
|
|
# Draws a blank badge
|
|
def draw_badge():
|
|
display.set_pen(RED)
|
|
display.rectangle(0, 0, WIDTH, 60)
|
|
display.rectangle(0, HEIGHT - 20, WIDTH, 50)
|
|
display.set_pen(WHITE)
|
|
display.text("HELLO", 125, 5, 0, 3)
|
|
display.text("My name is:", 110, 35, 320, 2)
|
|
display.update()
|
|
|
|
|
|
def calculate_text_size():
|
|
global text_size
|
|
name_width = display.measure_text(name, text_size)
|
|
# Calculate the width of the text in pixels, adjusts according to the screen width
|
|
while name_width > 290:
|
|
text_size -= 1
|
|
name_width = display.measure_text(name, text_size)
|
|
|
|
# Calculate the margin to be applied on X
|
|
margin_x = (WIDTH - name_width) / 2
|
|
|
|
return int(margin_x)
|
|
|
|
|
|
draw_badge()
|
|
text_x = calculate_text_size()
|
|
|
|
display.set_pen(BLACK)
|
|
display.text(name, text_x, text_y, 300, text_size)
|
|
display.update()
|