银杏科技有限公司旗下技术文档发布平台 | |||
技术支持电话 | 0379-69926675-801 | ||
技术支持邮件 | Gingko@vip.163.com | ||
版本 | 日期 | 作者 | 修改内容 |
---|---|---|---|
V1.0 | 2020-11-30 | yang | 初次建立 |
LED 是矩形(或圆形)的对象。它的亮度可以调节。亮度降低时,LED 的颜色会变暗。
LED 只有一个主要部分,称为 LED LV_LED_PART_MAIN ,它使用了所有典型的背景样式属性。
使用 lv_led_on(led) 和 lv_led_off(led) 可以控制LED的开关状态,函数 lv_led_toggle(led) 可以实现LED在ON 和 OFF 状态之间切换。
void lv_gui_run(void) { lvgl2rtt_init("lcd"); /* 初始化lvgl2rtt */ label = lv_label_create(lv_scr_act(), NULL); /* 创建标签 */ lv_label_set_text(label, "LED1"); /* 设置标签文本 */ lv_obj_align(label, NULL, LV_ALIGN_CENTER, 0, 0); /* 中心对齐 */ 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_led_off(led1); /* 初始LED关闭 */ while(true){ rt_thread_mdelay(1000); lv_led_toggle(led1); /* 翻转LED状态 */ } }
LED 除了亮灭两种状态外,还可以使用函数 lv_led_set_bright(led, bright) 设置LED的亮度,亮度值 bright 应介于 0(最暗)和 255(最亮)之间。
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 */ }
LED 支持通用事件,下面的例子就是将iCore4T板载LED与LED对象联系起来,通过点击LED对象或者标签来控制板载LED的亮灭,同时更新标签内容。
#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对象与标签对象使用同一回调函数 */ }