#####################################
##### IMPORT LIBRARIES
import machine
from utime import sleep
from ili9341 import Display, color565
from xglcd_font import XglcdFont
#####################################
##### PIN CONFIGURATIONS
# SPI configuration for ILI9341
sck = machine.Pin(18)
mosi = machine.Pin(23)
miso = machine.Pin(19)
spi = machine.SPI(1, baudrate=32000000, sck=sck, mosi=mosi, miso=miso)
# ILI9341 display control pins
rst = machine.Pin(32)
dc = machine.Pin(33)
cs = machine.Pin(5)
# Initialize the display
display = Display(spi, dc=dc, cs=cs, rst=rst)
arcadepix = XglcdFont('ArcadePix9x11.c', 9, 11)
# Potentiometer ADC pin
pot_pin = machine.ADC(machine.Pin(15))
pot_pin.atten(machine.ADC.ATTN_11DB) # Allow full 0-3.3V range
pot_pin.width(machine.ADC.WIDTH_12BIT) # 12-bit resolution (0-4095)
#####################################
##### MAIN ROUTINE
def main():
while True:
ili9341_potentiometer_display()
##########################################
##### SUBROUTINES
##########################################
def ili9341_potentiometer_display():
# Read potentiometer value
pot_value = pot_pin.read()
voltage = pot_value * (3.3 / 4095)
# Print to serial monitor
print("Potentiometer Value:", pot_value)
print("Voltage:", round(voltage, 2), "V")
# Display on TFT
display.clear(color565(0, 0, 0)) # Black background
display.draw_text(
x=10,
y=30,
text="Pot Value: {}".format(pot_value),
font=arcadepix,
color=color565(255, 255, 0), # Yellow
background=color565(0, 0, 0)
)
display.draw_text(
x=10,
y=60,
text="Voltage: {:.2f} V".format(voltage),
font=arcadepix,
color=color565(0, 255, 0), # Green
background=color565(0, 0, 0)
)
sleep(0.5) # Small delay before next update
##########################################
##### EXECUTE MAIN ROUTINE
##########################################
if __name__ == '__main__':
main()