Esp32_Link调试笔记(Vol.2)

上回书说到屏幕成功显示字符串,接下来讲讲LVGL输入设备的定义。
完整代码 https://github.com/XiHuanMY/esp32-link

第二章 添加输入设备

原项目输入包括触屏和编码器,我这里因为偷懒将原项目编码器换成了上下拨的按键。
LVGL的输入有很多种就不说了,我只用了两种。
按照lvgl/examples/porting/lv_port_indev_template.c所说
/Copy this file as "lv_port_indev.c" and set this value to "1" to enable content/
接下来我们在复制出来的lv_port_indev.c和lv_port_indev.h中操作
目录结构如图
image

0. main.c修改
在屏幕初始化后添加lv_port_indev_init();

2.添加I2C控制
触摸IC是i2c控制的所以先把i2c驱动加上。驱动文件来自于github上lvgl/lvgl_esp32_drivers,按需修改i2c_manager.h中宏定义

点击查看代码
#define CONFIG_I2C_MANAGER_0_SDA 18
#define CONFIG_I2C_MANAGER_0_SCL 21

image

2.关键函数
这里只有四个函数需要自己实现分别是两个硬件的初始化和回调函数,具体内容请看项目中对应文件。

点击查看代码
static void keypad_init(void);
static void keypad_read(lv_indev_t * indev_drv, lv_indev_data_t * data);
static void touch_init(void);
static void touch_read(lv_indev_t * indev_drv, lv_indev_data_t * data);
void lv_port_indev_init(void)
{
keypad_init();
touch_init();
/*Register a encoder input device*/
indev_keypad = lv_indev_create();
lv_indev_set_type(indev_keypad, LV_INDEV_TYPE_KEYPAD);
lv_indev_set_read_cb(indev_keypad, keypad_read);
/*Register a touch input device*/
indev_touch = lv_indev_create();
lv_indev_set_type(indev_touch, LV_INDEV_TYPE_POINTER);
lv_indev_set_read_cb(indev_touch, touch_read);
group = lv_group_create();
lv_indev_set_group(indev_keypad, group);
lv_group_set_default(group);
}
每个人屏幕显示方向可能有所不同,导致触摸滑动方向和实际有所偏差可以在这里修改x和y的翻转等

image

本文作者:一般摸鱼。

本文链接:https://www.cnblogs.com/moyuu/p/18723774

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   一般摸鱼。  阅读(1)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起