# micropython_lvgl_example **Repository Path**: lyl6/micropython_lvgl_example ## Basic Information - **Project Name**: micropython_lvgl_example - **Description**: 为micropython unix 端口编写的 lvgl例子 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 5 - **Created**: 2024-03-03 - **Last Updated**: 2024-03-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # micropython_lvgl_example #### 介绍 为micropython unix 端口编写的 lvgl例子 该mpy固件从`https://github.com/lvgl/lv_micropython`移植而来,可以参考教程[支持LVGL的micropython固件编译(二)arm板移植](https://blog.csdn.net/qq_34440409/article/details/118421452?spm=1001.2014.3001.5502) 目前主要针对lvgl8版本固件做了测试列子,例子参考来自以下渠道: - lv_micropython/lib/lv_bindings/examples - `https://docs.lvgl.io/master/examples.html#` #### 目录结构 - assets: 存放图片等资源文件 - firmware:存放mpy固件,目的前给D1/D1s编译好了固件 - lvgl8_example:适用于lvgl8的mpy例子 - driver: 依赖的驱动程序 - evdev.py: 支持鼠标以及触摸屏的驱动 - imagetools.py #### 安装教程 1. 下载该存储库,拷贝到板端 2. firmware下的mpy固件可以拷贝到/usr/bin目录下,以方便执行 #### 使用示例 以fb_test.py为例说明: 1. 打开fb_test.py文件,根据你的屏幕分辨率修改该参数: ```python LCD_W = 720 LCD_H = 1280 ``` 2. 开启输入设备: ```python import evdev # 以下两个输入可以任选其一或者都开打 mouse = evdev.mouse_indev(scr) #注册鼠标驱动 tp = evdev.tp_indev(scr,device='/dev/input/event2') #注册触摸屏驱动 ``` 3. driver/evdev.py文件里可以改动以下代码选择是否显示鼠标指针 ```python def touch_read(self, indev_drv, data) -> int: data.point.x = (int)(self.tmp_x * self.x_k) data.point.y = (int)(self.tmp_y * self.y_k) data.state = self.tmp_state #print("X:%d, Y:%d" % (data.point.x, data.point.y)) if self.tp_move_flag == True: # Draw cursor, if needed if self.cursor : self.cursor(data) #注释该句关闭鼠标指针显示 if self.tp_read_callback != None: self.tp_read_callback(self.tmp_state, (int)(self.tmp_x * self.x_k), (int)(self.tmp_y * self.y_k)) return 0 ``` 执行测试(在linux终端下执行): ```bash cd lvgl8_example ../firmware/D1/micropython1_17-lvgl8 fb_test.py # 如果已经把mpy固件拷贝到了/usr/bin下可以按以下方式执行 micropython1_17-lvgl8 fb_test.py micropython1_17-lvgl8 advanced_demo.py micropython1_17-lvgl8 uasyncio_example1.py micropython1_17-lvgl8 -i lv_main.py ``` micropython 后跟 `-i` 参数可以在执行脚本后进入repl模式,这样可以在repl中调出脚本里的所有对象,并可以执行新代码,方便调试。 micropython 支持tab补全,键入 `对象名称.` 后按tab查看支持的方法。 micropython固件编译默认堆栈内存大小为1M,如果py程序内存占用超限可以通过跟参数 `-X heapsize=8M`来自定义分配内存大小,关于micropythong更多可选参数通过`-h`查询 #### 增加C的触摸模组与内置png解码 在`firmware/D1/`中增加了一个新固件`micropython1_17-lvgl8-tp-png`, 可以使用c写的触摸解析驱动(touchscreen),以及lvgl内置的png解码。 ```python # touchscreen init: #device: (必选参数)触摸屏的输入设备节点 #width,height: (可选参数)触摸屏的原始分辨率,如果你的触摸分辨率与屏幕不一致可以通过设置该参数自动适配 touchscreen.init(device='/dev/input/event2',width=720,height=1280) ``` 具体用法参照`lvgl8_example/fw_tp_png_example.py`示例文件 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)