Last active
July 31, 2022 21:27
-
-
Save todbot/0913d90ff283784665ef52f69af0a65b to your computer and use it in GitHub Desktop.
Test how fast doing full screen refresh is on Feather RP2040 and HX8357 480x320 FeatherWing display over SPI
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# displayio_hx8357_framerate_test.py | |
# 31 Jul 2022 - @todbot / Tod Kurt, from DJDevon3 full-screen spritesheet bitmap | |
import time | |
import board, digitalio, busio | |
import displayio, terminalio | |
import adafruit_hx8357 | |
from adafruit_display_text import label | |
import adafruit_imageload | |
sprite_fname = "Clouds_22_Spritesheet256nc_crop-0.bmp" # only half screen, and scaled 50% | |
sprite_cnt = 23*1 | |
sprite_w,sprite_h = 240,80 | |
# sprite_fname = "Clouds_22_Spritesheet.bmp" # full screen 100% | |
# sprite_cnt = 23*1 | |
# sprite_w,sprite_h = 480,320 | |
#sprite_sheet,sprite_palette = adafruit_imageload.load(sprite_fname) | |
sprite_sheet = displayio.OnDiskBitmap(open(sprite_fname, "rb")) | |
sprite_palette = sprite_sheet.pixel_shader | |
sprite = displayio.TileGrid(sprite_sheet, pixel_shader=sprite_palette, | |
width = 1, height = 1, tile_width = sprite_w, tile_height = sprite_h) | |
displayio.release_displays() | |
spi = board.SPI() | |
tft_cs = board.D9 | |
tft_dc = board.D10 | |
display_bus = displayio.FourWire(spi, command=tft_dc, chip_select=tft_cs, baudrate=40_000_000) | |
display = adafruit_hx8357.HX8357(display_bus, width=480, height=320) | |
main = displayio.Group() | |
display.show(main) | |
spriteg = displayio.Group(scale=2) | |
spriteg.append(sprite) | |
main.append(spriteg) | |
text_area = label.Label( terminalio.FONT, text="hi world", color=0xFFFFFF, x=8, y=25 ) | |
main.append(text_area) | |
i=0 | |
last_time=time.monotonic() | |
while True: | |
print("hi", spi.frequency, time.monotonic() - last_time) | |
last_time = time.monotonic() | |
sprite[0] = i | |
i = (i+1) % sprite_cnt | |
display.refresh( target_frames_per_second = 30 ) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment