btnmatrix矩阵按键 lvgl 用arduino实现
时间: 2023-09-25 18:12:44 浏览: 147
LVGL Arduino 库文件和ESP32 Project Demo
要在 Arduino 上实现 LittlevGL 中的按钮矩阵按键,需要进行以下步骤:
1. 安装 LittlevGL 库
在 Arduino IDE 中,打开“工具”>“管理库”,搜索并安装 LittlevGL 库。
2. 初始化 LittlevGL
在 Arduino 代码中,使用 lvgl 库中的 `lv_init()` 函数初始化 LittlevGL。
```c
#include <lvgl.h>
void setup() {
lv_init();
// ...
}
```
3. 创建按钮矩阵
使用 `lv_btnmatrix_create()` 函数创建按钮矩阵对象,并使用 `lv_btnmatrix_set_map()` 函数设置按钮矩阵的文本标签。
```c
lv_obj_t *btnm = lv_btnmatrix_create(lv_scr_act(), NULL);
lv_btnmatrix_set_map(btnm, btnm_map);
```
其中,`btnm_map` 是一个指向字符数组的指针,用于指定按钮矩阵中每个按钮的文本标签。
4. 设置按钮按下事件处理函数
使用 `lv_btnmatrix_set_btn_click_action()` 函数设置按钮按下事件处理函数。当用户按下按钮时,将调用此函数。
```c
void btn_click_action(lv_obj_t *btnm, const char *txt) {
// 处理按钮按下事件
}
lv_btnmatrix_set_btn_click_action(btnm, btn_click_action);
```
其中,`btn_click_action()` 是自定义的函数,用于处理按钮按下事件。按钮矩阵对象和文本标签将作为参数传递给此函数。
5. 设置按钮样式
使用 `lv_btnmatrix_set_style()` 函数设置按钮的样式。可以设置按钮的背景色、文本颜色、边框颜色等。
```c
static lv_style_t style_btn_rel;
static lv_style_t style_btn_pr;
lv_style_copy(&style_btn_rel, &lv_style_btn_rel);
style_btn_rel.body.main_color = LV_COLOR_RED;
style_btn_rel.body.grad_color = LV_COLOR_MAROON;
lv_style_copy(&style_btn_pr, &lv_style_btn_pr);
style_btn_pr.body.main_color = LV_COLOR_MAROON;
style_btn_pr.body.grad_color = LV_COLOR_RED;
lv_btnmatrix_set_style(btnm, LV_BTNMATRIX_STYLE_BTN_REL, &style_btn_rel);
lv_btnmatrix_set_style(btnm, LV_BTNMATRIX_STYLE_BTN_PR, &style_btn_pr);
```
以上代码设置按钮矩阵中按下和释放状态下按钮的样式。
6. 运行 LittlevGL
在 `setup()` 函数中,使用 `lv_task_create()` 函数创建一个定时器任务,并在其中调用 `lv_task_handler()` 函数,以便 LittlevGL 可以定期更新屏幕。
```c
void lvgl_task() {
while (true) {
lv_task_handler();
delay(5);
}
}
void setup() {
lv_init();
lv_obj_t *btnm = lv_btnmatrix_create(lv_scr_act(), NULL);
lv_btnmatrix_set_map(btnm, btnm_map);
lv_btnmatrix_set_btn_click_action(btnm, btn_click_action);
// 设置按钮样式
// ...
// 创建定时器任务
lv_task_create(lvgl_task, 5, LV_TASK_PRIO_LOWEST);
}
void loop() {
// ...
}
```
最后,在 `loop()` 函数中可以添加其他需要执行的代码,例如读取传感器数据、控制电机运动等。
阅读全文