这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
icore4tlvgl_10 [2020/12/05 16:07] zgf 创建 |
icore4tlvgl_10 [2022/04/01 11:13] (当前版本) sean |
||
---|---|---|---|
行 2: | 行 2: | ||
|技术支持电话|**0379-69926675-801**||| | |技术支持电话|**0379-69926675-801**||| | ||
|技术支持邮件|Gingko@vip.163.com||| | |技术支持邮件|Gingko@vip.163.com||| | ||
- | |技术论坛|http://www.eeschool.org||| | ||
^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ||
| V1.0 | 2020-11-30 | yang | 初次建立 | | | V1.0 | 2020-11-30 | yang | 初次建立 | | ||
===== 实验十:lv_led指示灯 ===== | ===== 实验十:lv_led指示灯 ===== | ||
- | |||
- | {{ :icore4t:icore4t_rtt_lvgl_9_1.png?direct |}} | ||
- | |||
- | <code c> | ||
- | |||
- | </code> | ||
==== 一、LED ==== | ==== 一、LED ==== | ||
行 30: | 行 23: | ||
void lv_gui_run(void) | void lv_gui_run(void) | ||
{ | { | ||
- | lvgl2rtt_init("lcd"); /* 初始化lvgl2rtt */ | + | lvgl2rtt_init("lcd"); /* 初始化lvgl2rtt */ |
- | label = lv_label_create(lv_scr_act(), NULL); /* 创建标签 */ | + | label = lv_label_create(lv_scr_act(), NULL); /* 创建标签 */ |
- | lv_label_set_text(label, "LED1"); /* 设置标签文本 */ | + | lv_label_set_text(label, "LED1"); /* 设置标签文本 */ |
- | lv_obj_align(label, NULL, LV_ALIGN_CENTER, 0, 0); /* 中心对齐 */ | + | lv_obj_align(label, NULL, LV_ALIGN_CENTER, 0, 0); /* 中心对齐 */ |
- | lv_obj_t * led1 = lv_led_create(lv_scr_act(), NULL); /* 创建LED */ | + | lv_obj_t * led1 = lv_led_create(lv_scr_act(), NULL); /* 创建LED */ |
- | lv_obj_align(led1, label, LV_ALIGN_OUT_RIGHT_MID, 20, 0); | + | lv_obj_align(led1, label, LV_ALIGN_OUT_RIGHT_MID, 20, 0); |
- | lv_led_off(led1); /* 初始LED关闭 */ | + | lv_led_off(led1); /* 初始LED关闭 */ |
- | while(true){ | + | while(true){ |
rt_thread_mdelay(1000); | rt_thread_mdelay(1000); | ||
- | lv_led_toggle(led1); /* 翻转LED状态 */ | + | lv_led_toggle(led1); /* 翻转LED状态 */ |
- | } | + | } |
} | } | ||
</code> | </code> | ||
行 52: | 行 45: | ||
<code c> | <code c> | ||
+ | void lv_gui_run(void) | ||
+ | { | ||
+ | lvgl2rtt_init("lcd"); /* 初始化lvgl2rtt */ | ||
+ | lv_obj_t * led1 = lv_led_create(lv_scr_act(), NULL); /* 创建LED1 */ | ||
+ | lv_obj_align(led1, NULL, LV_ALIGN_CENTER, -160, 0); /* 相对位置 */ | ||
+ | lv_led_off(led1); /* 关闭LED */ | ||
+ | |||
+ | lv_obj_t * led2 = lv_led_create(lv_scr_act(), led1); /* 创建LED2 */ | ||
+ | lv_obj_align(led2, NULL, LV_ALIGN_CENTER, -80, 0); /* 相对位置 */ | ||
+ | lv_led_set_bright(led2, 120); /* 设置亮度值 */ | ||
+ | lv_obj_t * led3 = lv_led_create(lv_scr_act(), led1); /* 创建LED3 */ | ||
+ | lv_obj_align(led3, NULL, LV_ALIGN_CENTER, 0, 0); /* 相对位置 */ | ||
+ | lv_led_set_bright(led3, 180); /* 设置亮度值 */ | ||
+ | lv_obj_t * led4 = lv_led_create(lv_scr_act(), led1); /* 创建LED4 */ | ||
+ | lv_obj_align(led4, NULL, LV_ALIGN_CENTER, 80, 0); /* 相对位置 */ | ||
+ | lv_led_set_bright(led4, 240); /* 设置亮度值 */ | ||
+ | lv_obj_t * led5 = lv_led_create(lv_scr_act(), led1); /* 创建LED5 */ | ||
+ | lv_obj_align(led5, NULL, LV_ALIGN_CENTER, 160, 0); /* 相对位置 */ | ||
+ | lv_led_on(led5); /* 打开LED */ | ||
+ | } | ||
</code> | </code> | ||
+ | |||
==== 四、事件 ==== | ==== 四、事件 ==== | ||
LED 支持通用事件,下面的例子就是将iCore4T板载LED与LED对象联系起来,通过点击LED对象或者标签来控制板载LED的亮灭,同时更新标签内容。 | LED 支持通用事件,下面的例子就是将iCore4T板载LED与LED对象联系起来,通过点击LED对象或者标签来控制板载LED的亮灭,同时更新标签内容。 | ||
- | {{ :icore4t:icore4t_rtt_lvgl_10_1.gif?direct |}} | + | {{ :icore4t:icore4t_rtt_lvgl_10_3.gif?direct |}} |
<code c> | <code c> | ||
+ | #include <board.h> | ||
+ | #define LED0_PIN GET_PIN(A, 10) /* 定义iCore4T的LED引脚 */ | ||
+ | lv_obj_t * label; | ||
+ | lv_obj_t * led1; | ||
+ | static void event_handler(lv_obj_t * obj, lv_event_t event) /* 回调函数 */ | ||
+ | { | ||
+ | if(event == LV_EVENT_PRESSED) { /* 按键状态切换的话 */ | ||
+ | if(rt_pin_read(LED0_PIN) == PIN_LOW ){ /* 切换LED状态 */ | ||
+ | rt_pin_write(LED0_PIN, PIN_HIGH); | ||
+ | lv_label_set_text(label, "LED off"); /* 更新标签内容 */ | ||
+ | lv_led_off(led1); /* 更新LED状态 */ | ||
+ | }else{ | ||
+ | rt_pin_write(LED0_PIN, PIN_LOW); | ||
+ | lv_label_set_text(label, "#ff0000 LED on#"); /* 更新标签内容并设为红色 */ | ||
+ | lv_led_on(led1); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | void lv_gui_run(void) | ||
+ | { | ||
+ | lvgl2rtt_init("lcd"); /* 初始化lvgl2rtt */ | ||
+ | rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT); /* 设置LED为推挽输出 */ | ||
+ | rt_pin_write(LED0_PIN, PIN_HIGH); /* LED默认关闭 */ | ||
+ | |||
+ | label = lv_label_create(lv_scr_act(), NULL); | ||
+ | lv_label_set_text(label, "LED off"); | ||
+ | lv_obj_set_click(label, true); /* 开启标签点击使能 */ | ||
+ | lv_label_set_recolor(label, true); /* 开启标签重着色 */ | ||
+ | lv_obj_align(label, NULL, LV_ALIGN_CENTER, 0, 0); | ||
+ | |||
+ | led1 = lv_led_create(lv_scr_act(), NULL); /* 创建led对象 */ | ||
+ | lv_obj_align(led1, label, LV_ALIGN_CENTER, 60, 0); | ||
+ | lv_led_off(led1); | ||
+ | |||
+ | lv_obj_set_event_cb(label, event_handler); /* 添加回调函数 */ | ||
+ | lv_obj_set_event_cb(led1, event_handler); /* led对象与标签对象使用同一回调函数 */ | ||
+ | } | ||
</code> | </code> | ||