print("Hello, ESP32!")

import machine
from utime import sleep
from ili9341 import Display, color565
from xglcd_font import XglcdFont

sck = machine.Pin(18)    
mosi = machine.Pin(23)    
miso = machine.Pin(19)   
spi = machine.SPI(1, baudrate=32000000, sck=sck, mosi=mosi, miso=miso)

rst = machine.Pin(17)     
dc = machine.Pin(16)      
cs = machine.Pin(5)       

display = Display(spi, dc=dc, cs=cs, rst=rst)
arcadepix = XglcdFont('ArcadePix9x11.c', 9, 11)

pot_pin = machine.ADC(machine.Pin(4))  
pot_pin.atten(machine.ADC.ATTN_11DB)    
pot_pin.width(machine.ADC.WIDTH_12BIT) 

def main():
    while True:
        ili9341_spi()
        display_potentiometer_values()

def ili9341_spi():
    display.clear(color565(64, 0, 255))
    sleep(1)

    display.clear()

    display.draw_hline(10, 319, 229, color565(255, 0, 255))
    sleep(1)
    display.draw_vline(10, 0, 319, color565(0, 255, 255))
    sleep(1)
    display.fill_hrect(23, 50, 30, 75, color565(255, 255, 255))
    sleep(1)
    display.draw_hline(0, 0, 222, color565(255, 0, 0))
    sleep(1)
    display.draw_line(127, 0, 64, 127, color565(255, 255, 0))
    sleep(2)

    display.clear()

    coords = [[0, 63], [78, 80], [122, 92], [50, 50], [78, 15], [0, 63]]
    display.draw_lines(coords, color565(0, 255, 255))
    sleep(1)
    display.clear()

    display.fill_polygon(7, 120, 120, 100, color565(0, 255, 0))
    sleep(1)
    display.fill_rectangle(0, 0, 15, 227, color565(255, 0, 0))
    sleep(1)

    display.clear()

    display.fill_rectangle(0, 0, 163, 163, color565(128, 128, 255))
    sleep(1)
    display.draw_rectangle(0, 64, 163, 163, color565(255, 0, 255))
    sleep(1)
    display.fill_rectangle(64, 0, 163, 163, color565(128, 0, 255))
    sleep(1)
    display.draw_polygon(3, 120, 286, 30, color565(0, 64, 255), rotate=15)
    sleep(3)

    display.clear()

    display.fill_circle(132, 132, 70, color565(0, 255, 0))
    sleep(1)
    display.draw_circle(132, 96, 70, color565(0, 0, 255))
    sleep(1)
    display.fill_ellipse(96, 96, 30, 16, color565(255, 0, 0))
    sleep(1)
    display.draw_ellipse(96, 256, 16, 30, color565(255, 255, 0))
    sleep(5)

    display.clear()

    text = 'Welcome to ETC613'
    display.draw_text(
        x=0,
        y=0,
        text=text,
        font=arcadepix,
        color=color565(255, 0, 0),
        background=color565(255, 255, 255),
        landscape=False,
        spacing=1
    )
    sleep(5)

    display.clear()

    display_potentiometer_values()
    sleep(3)

def display_potentiometer_values():
    pot_value = pot_pin.read()
    voltage = pot_value * (3.3 / 4095)

    print("Potentiometer Value:", pot_value)
    print("Voltage: {:.2f} V".format(voltage))

    display.draw_text(
        x=10,
        y=200,
        text="Pot: {}".format(pot_value),
        font=arcadepix,
        color=color565(255, 255, 0),
        background=color565(0, 0, 0)
    )

    display.draw_text(
        x=10,
        y=220,
        text="V: {:.2f}V".format(voltage),
        font=arcadepix,
        color=color565(0, 255, 0),
        background=color565(0, 0, 0)
    )

if __name__ == '__main__':
    main()
D0D1D2D3D4D5D6D7GNDLOGIC