from ST7735 import TFT from sysfont import sysfont from machine import SPI,Pin import time import math spi = SPI(1, baudrate=20000000, polarity=0, phase=0, sck=Pin(10), mosi=Pin(11), miso=None) tft=TFT(spi,8,12,9) tft.initr() tft.rgb(True) def testlines(color): tft.fill(TFT.RED) for x in range(0, tft.size()[0], 6): tft.line((0,0),(x, tft.size()[1] - 1), color) for y in range(0, tft.size()[1], 6): tft.line((0,0),(tft.size()[0] - 1, y), color) tft.fill(TFT.BLACK) for x in range(0, tft.size()[0], 6): tft.line((tft.size()[0] - 1, 0), (x, tft.size()[1] - 1), color) for y in range(0, tft.size()[1], 6): tft.line((tft.size()[0] - 1, 0), (0, y), color) tft.fill(TFT.BLACK) for x in range(0, tft.size()[0], 6): tft.line((0, tft.size()[1] - 1), (x, 0), color) for y in range(0, tft.size()[1], 6): tft.line((0, tft.size()[1] - 1), (tft.size()[0] - 1,y), color) tft.fill(TFT.BLACK) for x in range(0, tft.size()[0], 6): tft.line((tft.size()[0] - 1, tft.size()[1] - 1), (x, 0), color) for y in range(0, tft.size()[1], 6): tft.line((tft.size()[0] - 1, tft.size()[1] - 1), (0, y), color) def testfastlines(color1, color2): tft.fill(TFT.BLACK) for y in range(0, tft.size()[1], 5): tft.hline((0,y), tft.size()[0], color1) for x in range(0, tft.size()[0], 5): tft.vline((x,0), tft.size()[1], color2) def testdrawrects(color): tft.fill(TFT.BLACK); for x in range(0,tft.size()[0],6): tft.rect((tft.size()[0]//2 - x//2, tft.size()[1]//2 - x/2), (x, x), color) def testfillrects(color1, color2): tft.fill(TFT.BLACK); for x in range(tft.size()[0],0,-6): tft.fillrect((tft.size()[0]//2 - x//2, tft.size()[1]//2 - x/2), (x, x), color1) tft.rect((tft.size()[0]//2 - x//2, tft.size()[1]//2 - x/2), (x, x), color2) def testfillcircles(radius, color): for x in range(radius, tft.size()[0], radius * 2): for y in range(radius, tft.size()[1], radius * 2): tft.fillcircle((x, y), radius, color) def testdrawcircles(radius, color): for x in range(0, tft.size()[0] + radius, radius * 2): for y in range(0, tft.size()[1] + radius, radius * 2): tft.circle((x, y), radius, color) def testtriangles(): tft.fill(TFT.BLACK); color = 0xF800 w = tft.size()[0] // 2 x = tft.size()[1] - 1 y = 0 z = tft.size()[0] for t in range(0, 15): tft.line((w, y), (y, x), color) tft.line((y, x), (z, x), color) tft.line((z, x), (w, y), color) x -= 4 y += 4 z -= 4 color += 100 def testroundrects(): tft.fill(TFT.BLACK); color = 100 for t in range(5): x = 0 y = 0 w = tft.size()[0] - 2 h = tft.size()[1] - 2 for i in range(17): tft.rect((x, y), (w, h), color) x += 2 y += 3 w -= 4 h -= 6 color += 1100 color += 100 def tftprinttest(): tft.fill(TFT.BLACK); v = 30 tft.text((0, v), "Hello World!", TFT.RED, sysfont, 1, nowrap=True) v += sysfont["Height"] tft.text((0, v), "Hello World!", TFT.YELLOW, sysfont, 2, nowrap=True) v += sysfont["Height"] * 2 tft.text((0, v), "Hello World!", TFT.GREEN, sysfont, 3, nowrap=True) v += sysfont["Height"] * 3 tft.text((0, v), str(1234.567), TFT.BLUE, sysfont, 4, nowrap=True) time.sleep_ms(1500) tft.fill(TFT.BLACK); v = 0 tft.text((0, v), "Hello World!", TFT.RED, sysfont) v += sysfont["Height"] tft.text((0, v), str(math.pi), TFT.GREEN, sysfont) v += sysfont["Height"] tft.text((0, v), " Want pi?", TFT.GREEN, sysfont) v += sysfont["Height"] * 2 tft.text((0, v), hex(8675309), TFT.GREEN, sysfont) v += sysfont["Height"] tft.text((0, v), " Print HEX!", TFT.GREEN, sysfont) v += sysfont["Height"] * 2 tft.text((0, v), "Sketch has been", TFT.WHITE, sysfont) v += sysfont["Height"] tft.text((0, v), "running for: ", TFT.WHITE, sysfont) v += sysfont["Height"] tft.text((0, v), str(time.ticks_ms() / 1000), TFT.PURPLE, sysfont) v += sysfont["Height"] tft.text((0, v), " seconds.", TFT.WHITE, sysfont) def test_main(): tft.fill(TFT.BLACK) tft.text((0, 0), "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur adipiscing ante sed nibh tincidunt feugiat. Maecenas enim massa, fringilla sed malesuada et, malesuada sit amet turpis. Sed porttitor neque ut ante pretium vitae malesuada nunc bibendum. Nullam aliquet ultrices massa eu hendrerit. Ut sed nisi lorem. In vestibulum purus a tortor imperdiet posuere. ", TFT.WHITE, sysfont, 1) time.sleep_ms(1000) print("tft.text((0,0), 'Lorem ipsum...')") tftprinttest() time.sleep_ms(4000) print("tftprinttest()") testlines(TFT.YELLOW) time.sleep_ms(500) print("testlines()") testfastlines(TFT.RED, TFT.BLUE) time.sleep_ms(500) print("testfastlines()") testdrawrects(TFT.GREEN) time.sleep_ms(500) print("testdrawrects(TFT.GREEN)") testfillrects(TFT.YELLOW, TFT.PURPLE) time.sleep_ms(500) print("testfillrects(TFT.YEL...)") tft.fill(TFT.BLACK) testfillcircles(10, TFT.BLUE) testdrawcircles(10, TFT.WHITE) time.sleep_ms(500) print("[2] testfillcircles(), testdrawcircles()") testroundrects() time.sleep_ms(500) print("testroundrects()") testtriangles() time.sleep_ms(500) print("testtriangles()") test_main()