static lv_obj_t * ex3_led;
static lv_obj_t * ex3_brightness_label;
static lv_obj_t * slider_label;
static void ex3_on_btn_cb(lv_event_t * e)
{
(void)e;
lv_led_on(ex3_led);
lv_label_set_text(ex3_brightness_label, "Brightness: 255 (ON)");
}
static void ex3_off_btn_cb(lv_event_t * e)
{
(void)e;
lv_led_off(ex3_led);
lv_label_set_text(ex3_brightness_label, "Brightness: 0 (OFF)");
}
static void ex3_slider_cb(lv_event_t * e)
{
lv_obj_t * slider = lv_event_get_target(e);
int32_t value = lv_slider_get_value(slider);
/* Update percentage label (0-255 -> 0-100%) */
int percent = (value * 100) / 255;
lv_label_set_text_fmt(slider_label, "%d%%", percent);
lv_led_set_brightness(ex3_led, (uint8_t)value);
lv_label_set_text_fmt(ex3_brightness_label, "Brightness: %d",
(int)value);
}
void part1_ex3_led_control(void)
{
/* Background */
lv_obj_set_style_bg_color(lv_screen_active(),
lv_color_hex(0x0f0f23), LV_PART_MAIN);
/* Title */
lv_obj_t * title = lv_label_create(lv_screen_active());
lv_label_set_text(title, "Part 1 - Example 3: LED Widget");
lv_obj_set_style_text_color(title, lv_color_hex(0xFFFFFF), 0);
lv_obj_align(title, LV_ALIGN_TOP_MID, 0, 20);
/* Create LED widget */
ex3_led = lv_led_create(lv_screen_active());
lv_obj_set_size(ex3_led, 80, 80);
lv_obj_align(ex3_led, LV_ALIGN_CENTER, 0, -70);
lv_led_set_color(ex3_led, lv_palette_main(LV_PALETTE_GREEN));
lv_led_set_brightness(ex3_led, 150);
/* Brightness label */
ex3_brightness_label = lv_label_create(lv_screen_active());
lv_label_set_text(ex3_brightness_label, "Brightness: 150");
lv_obj_set_style_text_color(ex3_brightness_label,
lv_color_hex(0xFFFFFF), 0);
lv_obj_align(ex3_brightness_label, LV_ALIGN_CENTER, 0, 0);
/* ON Button */
lv_obj_t * btn_on = lv_button_create(lv_screen_active());
lv_obj_add_event_cb(btn_on, ex3_on_btn_cb, LV_EVENT_CLICKED, NULL);
lv_obj_align(btn_on, LV_ALIGN_CENTER, -60, 50);
lv_obj_set_style_bg_color(btn_on,
lv_palette_main(LV_PALETTE_GREEN), 0);
lv_obj_set_style_pad_hor(btn_on, 30, 0);
lv_obj_set_style_pad_ver(btn_on, 15, 0);
lv_obj_t * label_on = lv_label_create(btn_on);
lv_label_set_text(label_on, "ON");
lv_obj_center(label_on);
/* OFF Button */
lv_obj_t * btn_off = lv_button_create(lv_screen_active());
lv_obj_add_event_cb(btn_off, ex3_off_btn_cb, LV_EVENT_CLICKED, NULL);
lv_obj_align(btn_off, LV_ALIGN_CENTER, 60, 50);
lv_obj_set_style_bg_color(btn_off,
lv_palette_main(LV_PALETTE_RED), 0);
lv_obj_set_style_pad_hor(btn_off, 30, 0);
lv_obj_set_style_pad_ver(btn_off, 15, 0);
lv_obj_t * label_off = lv_label_create(btn_off);
lv_label_set_text(label_off, "OFF");
lv_obj_center(label_off);
/* Brightness Slider */
lv_obj_t * slider = lv_slider_create(lv_screen_active());
lv_obj_set_width(slider, 200);
lv_obj_align(slider, LV_ALIGN_CENTER, 0, 110);
lv_slider_set_range(slider, 0, 255);
lv_slider_set_value(slider, 150, LV_ANIM_OFF);
lv_obj_add_event_cb(slider, ex3_slider_cb,
LV_EVENT_VALUE_CHANGED, NULL);
/* Slider percentage label */
slider_label = lv_label_create(lv_screen_active());
lv_label_set_text(slider_label, "59%");
lv_obj_set_style_text_color(slider_label, lv_color_hex(0xFFFFFF), 0);
lv_obj_align_to(slider_label, slider,
LV_ALIGN_OUT_BOTTOM_MID, 0, 5);
}