pimoroni-pico/micropython/examples/interstate75/i75_64x64_scrolling_text.py

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))