micropython lvgl xpt2046的校准程序

您所在的位置:网站首页 3d打印pid校准 micropython lvgl xpt2046的校准程序

micropython lvgl xpt2046的校准程序

2023-03-19 13:08| 来源: 网络整理| 查看: 265

话说xpt2046 这个触控屏实在是太老了 但是也太经典了 2023年了 还拿个笔在电阻屏上戳戳戳。。。 没办法 哪里都有XPT2046这货 不废话了 上代码 好好看 好好学

# import libraries import time from machine import Pin import espidf as esp import lvgl as lv from ili9XXX import ili9341, LANDSCAPE from xpt2046 import xpt2046 import esp32 from micropython import const import _thread import machine lv.init() # init display disp = ili9341( miso=12, mosi=13, clk=14, cs=15, dc=23, rst=25, backlight=-1, power=-1, width=320, height=240, rot=LANDSCAPE ) HRES = lv.scr_act().get_disp().driver.hor_res VRES = lv.scr_act().get_disp().driver.ver_res # touch calibrations stored in NVRAM class TouchCalibration(object): def __init__(self): self._config = esp32.NVS('touch_cal') try: self._x0 = self._config.get_i32('x0') except OSError: self._x0 = 0 try: self._y0 = self._config.get_i32('y0') except OSError: self._y0 = 0 try: self._x1 = self._config.get_i32('x1') except OSError: self._x1 = HRES try: self._y1 = self._config.get_i32('y1') except OSError: self._y1 = VRES self._is_dirty = False def save(self): if self._is_dirty: self._config.commit() self._is_dirty = False @property def x0(self): return self._x0 @x0.setter def x0(self, value): self._x0 = value self._config.set_i32('x0', value) self._is_dirty = True @property def y0(self): return self._y0 @y0.setter def y0(self, value): self._y0 = value self._config.set_i32('y0', value) self._is_dirty = True @property def x1(self): return self._x1 @x1.setter def x1(self, value): self._x1 = value self._config.set_i32('x1', value) self._is_dirty = True @property def y1(self): return self._y1 @y1.setter def y1(self, value): self._y1 = value self._config.set_i32('y1', value) self._is_dirty = True @property def is_calibrated(self): return not ( self.x0 == 0 and self.y0 == 0 and self.x1 == HRES and self.y1 == VRES ) touch_calibration = TouchCalibration() # use same SPI as display, init touch touch = xpt2046( spihost=esp.HSPI_HOST, cs=26, transpose=False, cal_x0=touch_calibration.x0, cal_x1=touch_calibration.x1, cal_y0=touch_calibration.y0, cal_y1=touch_calibration.y1 ) # enable backlight backlight = Pin(2, Pin.OUT) backlight.value(1) def main(): def event_handler(evt): code = evt.get_code() if code == lv.EVENT.CLICKED: print("Clicked event seen") elif code == lv.EVENT.VALUE_CHANGED: print("Value changed seen") # create a simple button btn1 = lv.btn(lv.scr_act()) # attach the callback btn1.add_event_cb(event_handler, lv.EVENT.ALL, None) btn1.align(lv.ALIGN.CENTER, 0, -40) label = lv.label(btn1) label.set_text("Button") # create a toggle button btn2 = lv.btn(lv.scr_act()) # attach the callback # btn2.add_event_cb(event_handler,lv.EVENT.VALUE_CHANGED,None) btn2.add_event_cb(event_handler, lv.EVENT.ALL, None) btn2.align(lv.ALIGN.CENTER, 0, 40) btn2.add_flag(lv.obj.FLAG.CHECKABLE) # btn2.set_height(lv.SIZE_CONTENT) label = lv.label(btn2) label.set_text("Toggle") label.center() if touch_calibration.is_calibrated: main() else: # Run calibration class Tpcal_point: def __init__(self, x, y, name): self.display_coordinates = lv.point_t({'x': x, 'y': y}) self.touch_coordinate = None self.name = name def __repr__(self): return "%s: (%d, %d)" % ( self.name, self.touch_coordinate.x, self.touch_coordinate.y ) CIRCLE_SIZE = const(20) CIRCLE_OFFSET = const(20) TP_MAX_VALUE = const(10000) LV_COORD_MAX = const((1


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3