123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- /*
- * SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
- *
- * SPDX-License-Identifier: CC0-1.0
- */
- // This demo UI is adapted from LVGL official example: https://docs.lvgl.io/master/widgets/extra/meter.html#simple-meter
- #include "lvgl.h"
- static lv_obj_t *meter;
- static lv_obj_t * btn;
- static lv_disp_rot_t rotation = LV_DISP_ROT_NONE;
- static void set_value(void *indic, int32_t v)
- {
- lv_meter_set_indicator_end_value(meter, indic, v);
- }
- static void btn_cb(lv_event_t * e)
- {
- lv_disp_t *disp = lv_event_get_user_data(e);
- rotation++;
- if (rotation > LV_DISP_ROT_270) {
- rotation = LV_DISP_ROT_NONE;
- }
- lv_disp_set_rotation(disp, rotation);
- }
- void example_lvgl_demo_ui(lv_disp_t *disp)
- {
- lv_obj_t *scr = lv_disp_get_scr_act(disp);
- meter = lv_meter_create(scr);
- lv_obj_center(meter);
- lv_obj_set_size(meter, 240, 240);
- /*Add a scale first*/
- lv_meter_scale_t *scale = lv_meter_add_scale(meter);
- lv_meter_set_scale_ticks(meter, scale, 41, 2, 10, lv_palette_main(LV_PALETTE_GREY));
- lv_meter_set_scale_major_ticks(meter, scale, 8, 4, 15, lv_color_black(), 10);
- lv_meter_indicator_t *indic;
- /*Add a blue arc to the start*/
- indic = lv_meter_add_arc(meter, scale, 3, lv_palette_main(LV_PALETTE_BLUE), 0);
- lv_meter_set_indicator_start_value(meter, indic, 0);
- lv_meter_set_indicator_end_value(meter, indic, 20);
- /*Make the tick lines blue at the start of the scale*/
- indic = lv_meter_add_scale_lines(meter, scale, lv_palette_main(LV_PALETTE_BLUE), lv_palette_main(LV_PALETTE_BLUE), false, 0);
- lv_meter_set_indicator_start_value(meter, indic, 0);
- lv_meter_set_indicator_end_value(meter, indic, 20);
- /*Add a red arc to the end*/
- indic = lv_meter_add_arc(meter, scale, 3, lv_palette_main(LV_PALETTE_RED), 0);
- lv_meter_set_indicator_start_value(meter, indic, 80);
- lv_meter_set_indicator_end_value(meter, indic, 100);
- /*Make the tick lines red at the end of the scale*/
- indic = lv_meter_add_scale_lines(meter, scale, lv_palette_main(LV_PALETTE_RED), lv_palette_main(LV_PALETTE_RED), false, 0);
- lv_meter_set_indicator_start_value(meter, indic, 80);
- lv_meter_set_indicator_end_value(meter, indic, 100);
- /*Add a needle line indicator*/
- indic = lv_meter_add_needle_line(meter, scale, 4, lv_palette_main(LV_PALETTE_GREY), -10);
- btn = lv_btn_create(scr);
- lv_obj_t * lbl = lv_label_create(btn);
- lv_label_set_text_static(lbl, LV_SYMBOL_REFRESH" ROTATE");
- lv_obj_align(btn, LV_ALIGN_BOTTOM_LEFT, 30, -30);
- /*Button event*/
- lv_obj_add_event_cb(btn, btn_cb, LV_EVENT_CLICKED, disp);
- /*Create an animation to set the value*/
- lv_anim_t a;
- lv_anim_init(&a);
- lv_anim_set_exec_cb(&a, set_value);
- lv_anim_set_var(&a, indic);
- lv_anim_set_values(&a, 0, 100);
- lv_anim_set_time(&a, 2000);
- lv_anim_set_repeat_delay(&a, 100);
- lv_anim_set_playback_time(&a, 500);
- lv_anim_set_playback_delay(&a, 100);
- lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE);
- lv_anim_start(&a);
- }
- // lv_obj_t * ui_Screen1;
- // lv_obj_t * ui_Spinner1;
- // lv_obj_t * ui____initial_actions0;
- // void ui_Screen1_screen_init(void)
- // {
- // ui_Screen1 = lv_obj_create(NULL);
-
- // lv_obj_clear_flag(ui_Screen1, LV_OBJ_FLAG_SCROLLABLE); /// Flags
- // ui_Spinner1 = lv_spinner_create(ui_Screen1, 1000, 90);
- // lv_obj_set_width(ui_Spinner1, 80);
- // lv_obj_set_height(ui_Spinner1, 80);
- // lv_obj_set_x(ui_Spinner1, 5);
- // lv_obj_set_y(ui_Spinner1, 0);
- // lv_obj_set_align(ui_Spinner1, LV_ALIGN_CENTER);
- // lv_obj_clear_flag(ui_Spinner1, LV_OBJ_FLAG_CLICKABLE); /// Flags
- // }
- void lv_example_1(void)
- {
- /*Change the active screen's background color*/
- lv_obj_set_style_bg_color(lv_scr_act(), lv_color_hex(0x003a57), LV_PART_MAIN);
- /*Create a white label, set its text and align it to the center*/
- lv_obj_t * label = lv_label_create(lv_scr_act());
- lv_label_set_text(label, "Hello world");
- lv_obj_set_style_text_color(lv_scr_act(), lv_color_hex(0xffffff), LV_PART_MAIN);
- lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
- }
|