lvgl模拟窗帘开关程序(含资源文件)
时间: 2023-08-12 13:09:11 浏览: 215
电动窗帘的驱动程序
以下是一个简单的lvgl模拟窗帘开关程序,包含了资源文件。你可以根据自己的需求进行修改和优化。
```c
#include "lvgl/lvgl.h"
// 定义窗帘状态
typedef enum {
CURTAIN_CLOSED,
CURTAIN_OPENED
} curtain_state_t;
// 定义窗帘状态图标
static const lv_img_dsc_t img_curtain_closed = {
.header.always_zero = 0,
.header.w = 50,
.header.h = 50,
.data_size = 128 * LV_IMG_PX_SIZE_ALPHA_BYTE,
.header.cf = LV_IMG_CF_ALPHA_8BIT,
.data = {
// 二进制数据省略
}
};
static const lv_img_dsc_t img_curtain_opened = {
.header.always_zero = 0,
.header.w = 50,
.header.h = 50,
.data_size = 128 * LV_IMG_PX_SIZE_ALPHA_BYTE,
.header.cf = LV_IMG_CF_ALPHA_8BIT,
.data = {
// 二进制数据省略
}
};
// 定义窗帘状态标签
static lv_obj_t *lbl_curtain_state;
// 定义窗帘状态
static curtain_state_t curtain_state = CURTAIN_CLOSED;
// 窗帘开关回调函数
static void cb_curtain_switch(lv_obj_t *obj, lv_event_t event)
{
if (event == LV_EVENT_CLICKED) {
if (curtain_state == CURTAIN_CLOSED) {
curtain_state = CURTAIN_OPENED;
lv_img_set_src(lbl_curtain_state, &img_curtain_opened);
} else {
curtain_state = CURTAIN_CLOSED;
lv_img_set_src(lbl_curtain_state, &img_curtain_closed);
}
}
}
int main(void)
{
// 初始化lvgl
lv_init();
// 创建屏幕
lv_obj_t *scr = lv_disp_get_scr_act(NULL);
// 创建窗帘开关按钮
lv_obj_t *btn_curtain_switch = lv_btn_create(scr, NULL);
// 设置按钮样式
lv_btn_set_style(btn_curtain_switch, LV_BTN_STYLE_REL, &lv_style_pretty);
lv_btn_set_style(btn_curtain_switch, LV_BTN_STYLE_PR, &lv_style_pretty_color);
// 设置按钮位置和大小
lv_obj_set_size(btn_curtain_switch, 100, 50);
lv_obj_set_pos(btn_curtain_switch, 50, 50);
// 设置按钮标签
lv_obj_t *lbl_curtain_switch = lv_label_create(btn_curtain_switch, NULL);
lv_label_set_text(lbl_curtain_switch, "Curtain Switch");
// 设置按钮事件回调函数
lv_obj_set_event_cb(btn_curtain_switch, cb_curtain_switch);
// 创建窗帘状态标签
lbl_curtain_state = lv_img_create(scr, NULL);
lv_img_set_src(lbl_curtain_state, &img_curtain_closed);
lv_obj_set_pos(lbl_curtain_state, 200, 50);
// 运行lvgl
while (1) {
lv_task_handler();
usleep(5000);
}
return 0;
}
```
在程序中,我们定义了窗帘状态类型和图标,并创建了窗帘开关按钮和状态标签。当用户点击按钮时,程序会更新窗帘状态,并更新状态标签的图标。
你可以通过修改图标、按钮样式和位置等来满足自己的需求。
阅读全文