def __init__(self, m5stack=M5Stack(), miso=5, mosi=18, clk=19, cs=13, dc=12, backlight=100, backlight_on=1, power_on=1, spihost=esp.HSPI_HOST, mhz=40, factor=4, hybrid=True, width=240, height=320, start_x=0, start_y=0, invert=False, double_buffer=True, half_duplex=True, display_type=0, asynchronous=False, initialize=True): # Initializations if not lv.is_initialized(): lv.init() self.asynchronous = asynchronous self.initialize = initialize self.m5stack = m5stack self.width = width self.height = height self.start_x = start_x self.start_y = start_y self.miso = miso self.mosi = mosi self.clk = clk self.cs = cs self.dc = dc self.backlight = backlight self.backlight_on = backlight_on self.power_on = power_on self.spihost = spihost self.mhz = mhz self.factor = factor self.hybrid = hybrid self.half_duplex = half_duplex self.display_type = display_type self.buf_size = (self.width * self.height * lv.color_t.__SIZE__) // factor if invert: self.init_cmds.append({'cmd': 0x21}) # Register display driver self.buf1 = esp.heap_caps_malloc(self.buf_size, esp.MALLOC_CAP.DMA) self.buf2 = esp.heap_caps_malloc( self.buf_size, esp.MALLOC_CAP.DMA) if double_buffer else None if self.buf1 and self.buf2: print("Double buffer") elif self.buf1: print("Single buffer") else: raise RuntimeError( "Not enough DMA-able memory to allocate display buffer") self.disp_buf = lv.disp_draw_buf_t() self.disp_drv = lv.disp_drv_t() self.disp_buf.init(self.buf1, self.buf2, self.buf_size // lv.color_t.__SIZE__) self.disp_drv.init() self.disp_spi_init() self.disp_drv.user_data = { 'dc': self.dc, 'spi': self.spi, 'dt': self.display_type, 'start_x': self.start_x, 'start_y': self.start_y } self.disp_drv.draw_buf = self.disp_buf self.disp_drv.flush_cb = esp.ili9xxx_flush if hybrid and hasattr( esp, 'ili9xxx_flush') else self.flush self.disp_drv.monitor_cb = self.monitor self.disp_drv.hor_res = self.width self.disp_drv.ver_res = self.height if self.initialize: self.init() if not lv_utils.event_loop.is_running(): self.event_loop = lv_utils.event_loop( asynchronous=self.asynchronous)
data = lv.indev_data_t.cast(ptr) TOUCH.event() # print(TOUCH.state, TOUCH.points) data.point = lv.point_t({'x': TOUCH.points[1][0], 'y': TOUCH.points[1][1]}) data.state = lv.INDEV_STATE.PR if TOUCH.state == 1 else lv.INDEV_STATE.REL return False if config_touchscreen_support: i2c = I2C(I2C.I2C0, freq=1000*1000, scl=24, sda=27) # 24 27) devices = i2c.scan() print("devs", devices) # devs 0 [16, 38, 52, 56] TouchLow.config(i2c) TOUCH = Touch(480, 320, 200) lv.init() disp_buf1 = lv.disp_buf_t() buf1_1 = bytearray(320*10) lv.disp_buf_init(disp_buf1,buf1_1, None, len(buf1_1)//4) disp_drv = lv.disp_drv_t() lv.disp_drv_init(disp_drv) disp_drv.buffer = disp_buf1 # disp_drv.rotated = 1 disp_drv.flush_cb = lv_h.flush if board_m1n: disp_drv.hor_res = 240 disp_drv.ver_res = 240 else: disp_drv.hor_res = 480 disp_drv.ver_res = 320
---------- ddlist : The drop down list that triggered the event. event : The triggering event. """ if event == lv.EVENT.VALUE_CHANGED: opt = ddlist.get_selected() # Get the id of selected option # Modify the slider value according to the selection slider.set_value(round((opt * 100) / 4), True) """ INITIALIZE DISPLAY DRIVER """ lv.init() # Initialize LittlevGL library disp = M5ili9341() # Create a display driver """ CREATE A SCREEN Create a new screen and load it Screen can be created from any type object type Now a Page is used which is an object with scrollable content """ scr = lv.obj() lv.scr_load(scr) """ ADD A TITLE """