51 lines
1.2 KiB
Python
51 lines
1.2 KiB
Python
from time import ticks_ms
|
|
import math
|
|
|
|
import hub75
|
|
# from font_8x12 import font, letter_width, letter_height
|
|
from font_10x14 import font, letter_width, letter_height
|
|
|
|
|
|
WIDTH, HEIGHT = 64, 64
|
|
|
|
hub = hub75.Hub75(WIDTH, HEIGHT, stb_invert=True)
|
|
hub.start()
|
|
hub.clear()
|
|
|
|
text = " Hello World!"
|
|
|
|
t_s = ticks_ms()
|
|
f_s = ticks_ms() / 1000.0
|
|
|
|
frames = 0
|
|
|
|
|
|
def scroll_text(text, y, t):
|
|
text_length = len(text)
|
|
x = int(t)
|
|
letter = int((x / letter_width) % text_length)
|
|
pixel = x % letter_width
|
|
char = ord(text[letter])
|
|
for s_x in range(WIDTH):
|
|
col = font[char - 32][pixel]
|
|
s_y = y + int(math.sin((t / 3.0) + s_x / 30.0) * 8)
|
|
hub.set_color_masked(s_x, s_y, col, hub75.color_hsv(s_x / WIDTH, 1.0, 1.0))
|
|
pixel += 1
|
|
if pixel == letter_width:
|
|
pixel = 0
|
|
letter += 1
|
|
if letter == text_length:
|
|
letter = 0
|
|
char = ord(text[letter])
|
|
|
|
|
|
while True:
|
|
hub.clear()
|
|
t = (ticks_ms() - t_s) / 50.0
|
|
scroll_text(text, int(HEIGHT / 2) - int(letter_height / 2), t)
|
|
hub.flip()
|
|
frames += 1
|
|
if frames % 60 == 0:
|
|
f_e = ticks_ms() / 1000.0
|
|
print(frames / (f_e - f_s))
|