EMF_Camp_Badge/square_home/main.py

97 lines
2.6 KiB
Python

"""A home screen with squares that spin"""
___title___ = "Squares home"
___license___ = "MIT"
___dependencies___ = ["sleep", "app", "ugfx_helper", "buttons", "homescreen"]
___categories___ = ["Homescreens"]
import ugfx, os, time, sleep, ugfx_helper, math
from tilda import Buttons
from homescreen import *
width = 240
height = 320
ugfx_helper.init()
s = ugfx.Style()
s.set_background(ugfx.BLACK)
s.set_enabled([ugfx.WHITE, ugfx.html_color(0x800080), ugfx.html_color(0x800080), ugfx.html_color(0x800080)])
ugfx.set_default_style(s)
# This was taken from the stock home app
def draw_name():
intro_text = "Hi! I'm"
intro_height = 30
name_height = 60
max_name = 8
ugfx.orientation(90)
ugfx.set_default_font(ugfx.FONT_TITLE)
# Process name
name_setting = name("Set your name in the settings app")
if len(name_setting) <= max_name:
ugfx.set_default_font(ugfx.FONT_NAME)
else:
ugfx.set_default_font(ugfx.FONT_MEDIUM_BOLD)
ugfx.Label(0, ugfx.height() - name_height - intro_height, ugfx.width(), intro_height, intro_text, justification=ugfx.Label.CENTER)
ugfx.Label(0, ugfx.height() - name_height, ugfx.width(), name_height, name_setting, justification=ugfx.Label.CENTER)
ugfx.orientation(270)
def go():
ugfx.clear(ugfx.BLACK)
draw_name()
colors = [ugfx.WHITE, ugfx.GREEN, ugfx.YELLOW, ugfx.BLUE]
ci = 0
r = 70
dr = 2
d = 0.0
dd = 0.1
hOffset = 40
while True:
if (math.fabs(d) > 4):
ugfx.clear(ugfx.BLACK)
draw_name()
dd = -dd
d = 0
ci += 1
if (ci >= len(colors)):
ci = 0
px1 = math.floor(width / 2 + r * math.sin(d))
py1 = math.floor(height / 2 + r * math.cos(d) + hOffset)
px2 = math.floor(width / 2 + r * math.sin(d + math.pi / 2))
py2 = math.floor(height / 2 + r * math.cos(d + math.pi / 2) + hOffset)
px3 = math.floor(width / 2 + r * math.sin(d + math.pi))
py3 = math.floor(height / 2 + r * math.cos(d + math.pi) + hOffset)
px4 = math.floor(width / 2 + r * math.sin(d + (math.pi * 1.5)))
py4 = math.floor(height / 2 + r * math.cos(d + (math.pi * 1.5)) + hOffset)
ugfx.line(px1, py1, px2, py2, colors[ci])
ugfx.line(px3, py3, px2, py2, colors[ci])
ugfx.line(px3, py3, px4, py4, colors[ci])
ugfx.line(px1, py1, px4, py4, colors[ci])
d += dd
r += dr
if (r > 100):
dr = -dr
if (r < 30):
dr = -dr
sleep_or_exit(0.1)
go()