用户工具

站点工具


icore4tlvgl_10
银杏科技有限公司旗下技术文档发布平台
技术支持电话0379-69926675-801
技术支持邮件Gingko@vip.163.com
版本 日期 作者 修改内容
V1.0 2020-11-30 yang 初次建立

实验十:lv_led指示灯

一、LED

LED 是矩形(或圆形)的对象。它的亮度可以调节。亮度降低时,LED 的颜色会变暗。

LED 只有一个主要部分,称为 LED LV_LED_PART_MAIN ,它使用了所有典型的背景样式属性。

二、开关控制

使用 lv_led_on(led)lv_led_off(led) 可以控制LED的开关状态,函数 lv_led_toggle(led) 可以实现LED在ONOFF 状态之间切换。

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对象与标签对象使用同一回调函数 */
}
icore4tlvgl_10.txt · 最后更改: 2022/04/01 11:13 由 sean