import machine
import os
import math
from mixgo_nova import onboard_tft


print(os.listdir())
print(os.getcwd())
s = os.listdir()
for i in range(0, len(s), 1):
    onboard_tft.shows(s[i],x = 0,y = i * 12,size = 1,space = 0,center = False,color=0xffff)
