#include "LVGL_Example.h" // #include "LVGL_Music.h" #include /********************** * TYPEDEFS **********************/ typedef enum { DISP_SMALL, DISP_MEDIUM, DISP_LARGE, } disp_size_t; /********************** * STATIC PROTOTYPES **********************/ static void Onboard_create(lv_obj_t * parent); static void Buzzer_create(lv_obj_t * parent); static void Music_create(lv_obj_t * parent); static void color_changer_create(lv_obj_t * parent); static void color_changer_event_cb(lv_event_t * e); static void color_event_cb(lv_event_t * e); static void ta_event_cb(lv_event_t * e); static void birthday_event_cb(lv_event_t * e); static void calendar_event_cb(lv_event_t * e); void example1_increase_lvgl_tick(lv_timer_t * t); /********************** * STATIC VARIABLES **********************/ static disp_size_t disp_size; static lv_obj_t * tv; static lv_obj_t * calendar; lv_style_t style_text_muted; lv_style_t style_title; static lv_style_t style_icon; static lv_style_t style_bullet; static lv_obj_t * chart1; static lv_obj_t * chart2; static lv_obj_t * chart3; static lv_chart_series_t * ser1; static lv_chart_series_t * ser2; static lv_chart_series_t * ser3; static lv_chart_series_t * ser4; static const lv_font_t * font_large; static const lv_font_t * font_normal; static lv_timer_t * auto_step_timer; static lv_color_t original_screen_bg_color; static lv_timer_t * meter2_timer; lv_obj_t * SD_Size; lv_obj_t * FlashSize; lv_obj_t * BAT_Volts; lv_obj_t * Board_angle; lv_obj_t * RTC_Time; lv_obj_t * Wireless_Scan; lv_obj_t * Backlight_slider; void Lvgl_Example1(void){ if(LV_HOR_RES <= 320) disp_size = DISP_SMALL; else if(LV_HOR_RES < 720) disp_size = DISP_MEDIUM; else disp_size = DISP_LARGE; font_large = LV_FONT_DEFAULT; font_normal = LV_FONT_DEFAULT; lv_coord_t tab_h; if(disp_size == DISP_LARGE) { tab_h = 70; #if LV_FONT_MONTSERRAT_24 font_large = &lv_font_montserrat_24; #else LV_LOG_WARN("LV_FONT_MONTSERRAT_24 is not enabled for the widgets demo. Using LV_FONT_DEFAULT instead."); #endif #if LV_FONT_MONTSERRAT_16 font_normal = &lv_font_montserrat_16; #else LV_LOG_WARN("LV_FONT_MONTSERRAT_16 is not enabled for the widgets demo. Using LV_FONT_DEFAULT instead."); #endif } else if(disp_size == DISP_MEDIUM) { tab_h = 45; #if LV_FONT_MONTSERRAT_20 font_large = &lv_font_montserrat_20; #else LV_LOG_WARN("LV_FONT_MONTSERRAT_20 is not enabled for the widgets demo. Using LV_FONT_DEFAULT instead."); #endif #if LV_FONT_MONTSERRAT_14 font_normal = &lv_font_montserrat_14; #else LV_LOG_WARN("LV_FONT_MONTSERRAT_14 is not enabled for the widgets demo. Using LV_FONT_DEFAULT instead."); #endif } else { /* disp_size == DISP_SMALL */ tab_h = 45; #if LV_FONT_MONTSERRAT_18 font_large = &lv_font_montserrat_18; #else LV_LOG_WARN("LV_FONT_MONTSERRAT_18 is not enabled for the widgets demo. Using LV_FONT_DEFAULT instead."); #endif #if LV_FONT_MONTSERRAT_12 font_normal = &lv_font_montserrat_12; #else LV_LOG_WARN("LV_FONT_MONTSERRAT_12 is not enabled for the widgets demo. Using LV_FONT_DEFAULT instead."); #endif } // 设置字体 lv_style_init(&style_text_muted); lv_style_set_text_opa(&style_text_muted, LV_OPA_90); lv_style_init(&style_title); lv_style_set_text_font(&style_title, font_large); lv_style_init(&style_icon); lv_style_set_text_color(&style_icon, lv_theme_get_color_primary(NULL)); lv_style_set_text_font(&style_icon, font_large); lv_style_init(&style_bullet); lv_style_set_border_width(&style_bullet, 0); lv_style_set_radius(&style_bullet, LV_RADIUS_CIRCLE); tv = lv_tabview_create(lv_scr_act(), LV_DIR_TOP, tab_h); lv_obj_set_style_text_font(lv_scr_act(), font_normal, 0); if(disp_size == DISP_LARGE) { lv_obj_t * tab_btns = lv_tabview_get_tab_btns(tv); lv_obj_set_style_pad_left(tab_btns, LV_HOR_RES / 2, 0); lv_obj_t * logo = lv_img_create(tab_btns); LV_IMG_DECLARE(img_lvgl_logo); lv_img_set_src(logo, &img_lvgl_logo); lv_obj_align(logo, LV_ALIGN_LEFT_MID, -LV_HOR_RES / 2 + 25, 0); lv_obj_t * label = lv_label_create(tab_btns); lv_obj_add_style(label, &style_title, 0); lv_label_set_text(label, "LVGL v8"); lv_obj_align_to(label, logo, LV_ALIGN_OUT_RIGHT_TOP, 10, 0); label = lv_label_create(tab_btns); lv_label_set_text(label, "Widgets demo"); lv_obj_add_style(label, &style_text_muted, 0); lv_obj_align_to(label, logo, LV_ALIGN_OUT_RIGHT_BOTTOM, 10, 0); } lv_obj_t * t1 = lv_tabview_add_tab(tv, "Onboard"); // lv_obj_t * t2 = lv_tabview_add_tab(tv, "Buzzer"); // lv_obj_t * t3 = lv_tabview_add_tab(tv, "Shop"); // lv_coord_t screen_width = lv_obj_get_width(lv_scr_act()); // lv_obj_set_width(t1, screen_width); Onboard_create(t1); // Buzzer_create(t2); // shop_create(t3); // color_changer_create(tv); } static void led_event_cb(lv_event_t *e) { lv_obj_t *led = (lv_obj_t *)lv_event_get_user_data(e); lv_obj_t *sw = lv_event_get_target(e); if (lv_obj_get_state(sw) & LV_STATE_CHECKED) { lv_led_on(led); Set_EXIO(EXIO_PIN8,High); } else { lv_led_off(led); Set_EXIO(EXIO_PIN8,Low); } } static void Buzzer_create(lv_obj_t * parent) { lv_obj_t *label = lv_label_create(parent); lv_label_set_text(label, "The buzzer tes"); lv_obj_set_size(label, LV_PCT(30), LV_PCT(5)); lv_obj_align(label, LV_ALIGN_CENTER, 0, -60); lv_obj_set_style_text_align(label, LV_TEXT_ALIGN_CENTER, 0); lv_obj_t *led = lv_led_create(parent); lv_obj_set_size(led, 50, 50); lv_obj_align(led, LV_ALIGN_CENTER, -60, 0); lv_led_off(led); lv_obj_t *sw = lv_switch_create(parent); lv_obj_align(sw, LV_ALIGN_CENTER, 60, 0); lv_obj_add_event_cb(sw, led_event_cb, LV_EVENT_VALUE_CHANGED, led); } void Lvgl_Example1_close(void) { /*Delete all animation*/ lv_anim_del(NULL, NULL); lv_timer_del(meter2_timer); meter2_timer = NULL; lv_obj_clean(lv_scr_act()); lv_style_reset(&style_text_muted); lv_style_reset(&style_title); lv_style_reset(&style_icon); lv_style_reset(&style_bullet); } /********************** * STATIC FUNCTIONS **********************/ static void Onboard_create(lv_obj_t * parent) { /*Create a panel*/ lv_obj_t * panel1 = lv_obj_create(parent); lv_obj_set_height(panel1, LV_SIZE_CONTENT); lv_obj_t * panel1_title = lv_label_create(panel1); lv_label_set_text(panel1_title, "Onboard parameter"); lv_obj_add_style(panel1_title, &style_title, 0); lv_obj_t * SD_label = lv_label_create(panel1); lv_label_set_text(SD_label, "SD Card"); lv_obj_add_style(SD_label, &style_text_muted, 0); SD_Size = lv_textarea_create(panel1); lv_textarea_set_one_line(SD_Size, true); lv_textarea_set_placeholder_text(SD_Size, "SD Size"); lv_obj_add_event_cb(SD_Size, ta_event_cb, LV_EVENT_ALL, NULL); lv_obj_t * Flash_label = lv_label_create(panel1); lv_label_set_text(Flash_label, "Flash Size"); lv_obj_add_style(Flash_label, &style_text_muted, 0); FlashSize = lv_textarea_create(panel1); lv_textarea_set_one_line(FlashSize, true); lv_textarea_set_placeholder_text(FlashSize, "Flash Size"); lv_obj_add_event_cb(FlashSize, ta_event_cb, LV_EVENT_ALL, NULL); lv_obj_t * BAT_label = lv_label_create(panel1); lv_label_set_text(BAT_label, "Battery Voltage"); lv_obj_add_style(BAT_label, &style_text_muted, 0); BAT_Volts = lv_textarea_create(panel1); lv_textarea_set_one_line(BAT_Volts, true); lv_textarea_set_placeholder_text(BAT_Volts, "BAT Volts"); lv_obj_add_event_cb(BAT_Volts, ta_event_cb, LV_EVENT_ALL, NULL); lv_obj_t * angle_label = lv_label_create(panel1); lv_label_set_text(angle_label, "Angular deflection"); lv_obj_add_style(angle_label, &style_text_muted, 0); Board_angle = lv_textarea_create(panel1); lv_textarea_set_one_line(Board_angle, true); lv_textarea_set_placeholder_text(Board_angle, "Board angle"); lv_obj_add_event_cb(Board_angle, ta_event_cb, LV_EVENT_ALL, NULL); lv_obj_t * Time_label = lv_label_create(panel1); lv_label_set_text(Time_label, "RTC Time"); lv_obj_add_style(Time_label, &style_text_muted, 0); RTC_Time = lv_textarea_create(panel1); lv_textarea_set_one_line(RTC_Time, true); lv_textarea_set_placeholder_text(RTC_Time, "Display time"); lv_obj_add_event_cb(RTC_Time, ta_event_cb, LV_EVENT_ALL, NULL); lv_obj_t * Wireless_label = lv_label_create(panel1); lv_label_set_text(Wireless_label, "Wireless scan"); lv_obj_add_style(Wireless_label, &style_text_muted, 0); Wireless_Scan = lv_textarea_create(panel1); lv_textarea_set_one_line(Wireless_Scan, true); lv_textarea_set_placeholder_text(Wireless_Scan, "Wireless number"); lv_obj_add_event_cb(Wireless_Scan, ta_event_cb, LV_EVENT_ALL, NULL); lv_obj_t * Backlight_label = lv_label_create(panel1); lv_label_set_text(Backlight_label, "Backlight brightness"); lv_obj_add_style(Backlight_label, &style_text_muted, 0); Backlight_slider = lv_slider_create(panel1); lv_obj_add_flag(Backlight_slider, LV_OBJ_FLAG_CLICKABLE); lv_obj_set_size(Backlight_slider, 200, 35); lv_obj_set_style_radius(Backlight_slider, 3, LV_PART_KNOB); // Adjust the value for more or less rounding lv_obj_set_style_bg_opa(Backlight_slider, LV_OPA_TRANSP, LV_PART_KNOB); // lv_obj_set_style_pad_all(Backlight_slider, 0, LV_PART_KNOB); lv_obj_set_style_bg_color(Backlight_slider, lv_color_hex(0xAAAAAA), LV_PART_KNOB); lv_obj_set_style_bg_color(Backlight_slider, lv_color_hex(0xFFFFFF), LV_PART_INDICATOR); lv_obj_set_style_outline_width(Backlight_slider, 2, LV_PART_INDICATOR); lv_obj_set_style_outline_color(Backlight_slider, lv_color_hex(0xD3D3D3), LV_PART_INDICATOR); lv_slider_set_range(Backlight_slider, 5, Backlight_MAX); lv_slider_set_value(Backlight_slider, LCD_Backlight, LV_ANIM_ON); lv_obj_add_event_cb(Backlight_slider, Backlight_adjustment_event_cb, LV_EVENT_VALUE_CHANGED, NULL); lv_obj_t * panel2 = lv_obj_create(parent); lv_obj_set_height(panel2, LV_SIZE_CONTENT); lv_obj_t * panel2_title = lv_label_create(panel2); lv_label_set_text(panel2_title, "The buzzer tes"); lv_obj_add_style(panel2_title, &style_title, 0); lv_obj_t *led = lv_led_create(panel2); lv_obj_set_size(led, 50, 50); lv_obj_align(led, LV_ALIGN_CENTER, -60, 0); lv_led_off(led); lv_obj_t *sw = lv_switch_create(panel2); lv_obj_set_size(sw, 65, 40); lv_obj_align(sw, LV_ALIGN_CENTER, 60, 0); lv_obj_add_event_cb(sw, led_event_cb, LV_EVENT_VALUE_CHANGED, led); ///////////////////////////////////////////////////////// static lv_coord_t grid_main_col_dsc[] = {LV_GRID_FR(1), LV_GRID_TEMPLATE_LAST}; static lv_coord_t grid_main_row_dsc[] = {LV_GRID_CONTENT, LV_GRID_CONTENT, LV_GRID_TEMPLATE_LAST}; /*Create the top panel*/ static lv_coord_t grid_1_col_dsc[] = {LV_GRID_FR(4), LV_GRID_FR(1), LV_GRID_FR(1), LV_GRID_FR(1), LV_GRID_FR(4), LV_GRID_TEMPLATE_LAST}; static lv_coord_t grid_1_row_dsc[] = { LV_GRID_CONTENT, /*Name*/ LV_GRID_CONTENT, /*Description*/ LV_GRID_CONTENT, /*Email*/ LV_GRID_CONTENT, /*Email*/ LV_GRID_TEMPLATE_LAST }; static lv_coord_t grid_2_col_dsc[] = {LV_GRID_FR(1), LV_GRID_FR(5), LV_GRID_FR(1), LV_GRID_TEMPLATE_LAST}; static lv_coord_t grid_2_row_dsc[] = { LV_GRID_CONTENT, /*Title*/ 5, /*Separator*/ LV_GRID_CONTENT, /*Box title*/ 40, /*Box*/ LV_GRID_CONTENT, /*Box title*/ 40, /*Box*/ LV_GRID_CONTENT, /*Box title*/ 40, /*Box*/ LV_GRID_CONTENT, /*Box title*/ 40, /*Box*/ LV_GRID_CONTENT, /*Box title*/ 40, /*Box*/ LV_GRID_CONTENT, /*Box title*/ 40, /*Box*/ LV_GRID_CONTENT, /*Box title*/ 40, /*Box*/ LV_GRID_TEMPLATE_LAST }; lv_obj_set_grid_dsc_array(parent, grid_main_col_dsc, grid_main_row_dsc); lv_obj_set_grid_cell(panel1, LV_GRID_ALIGN_STRETCH, 0, 1, LV_GRID_ALIGN_START, 0, 1); lv_obj_set_grid_dsc_array(panel1, grid_2_col_dsc, grid_2_row_dsc); lv_obj_set_grid_cell(panel1_title, LV_GRID_ALIGN_CENTER, 1, 1, LV_GRID_ALIGN_CENTER, 0, 1); lv_obj_set_grid_cell(SD_label, LV_GRID_ALIGN_START, 1, 1, LV_GRID_ALIGN_START, 2, 1); lv_obj_set_grid_cell(SD_Size, LV_GRID_ALIGN_STRETCH, 1, 1, LV_GRID_ALIGN_CENTER, 3, 1); lv_obj_set_grid_cell(Flash_label, LV_GRID_ALIGN_START, 1, 1, LV_GRID_ALIGN_START, 4, 1); lv_obj_set_grid_cell(FlashSize, LV_GRID_ALIGN_STRETCH, 1, 1, LV_GRID_ALIGN_CENTER, 5, 1); lv_obj_set_grid_cell(BAT_label, LV_GRID_ALIGN_START, 1, 1, LV_GRID_ALIGN_START, 6, 1); lv_obj_set_grid_cell(BAT_Volts, LV_GRID_ALIGN_STRETCH, 1, 1, LV_GRID_ALIGN_CENTER, 7, 1); lv_obj_set_grid_cell(angle_label, LV_GRID_ALIGN_START, 1, 1, LV_GRID_ALIGN_START, 8, 1); lv_obj_set_grid_cell(Board_angle, LV_GRID_ALIGN_STRETCH, 1, 1, LV_GRID_ALIGN_CENTER, 9, 1); lv_obj_set_grid_cell(Time_label, LV_GRID_ALIGN_START, 1, 1, LV_GRID_ALIGN_START, 10, 1); lv_obj_set_grid_cell(RTC_Time, LV_GRID_ALIGN_STRETCH, 1, 1, LV_GRID_ALIGN_CENTER, 11, 1); lv_obj_set_grid_cell(Wireless_label, LV_GRID_ALIGN_START, 1, 1, LV_GRID_ALIGN_START, 12, 1); lv_obj_set_grid_cell(Wireless_Scan, LV_GRID_ALIGN_STRETCH, 1, 1, LV_GRID_ALIGN_CENTER, 13, 1); lv_obj_set_grid_cell(Backlight_label, LV_GRID_ALIGN_START, 1, 1, LV_GRID_ALIGN_START, 14, 1); lv_obj_set_grid_cell(Backlight_slider, LV_GRID_ALIGN_STRETCH, 1, 1, LV_GRID_ALIGN_CENTER, 15, 1); lv_obj_set_grid_cell(panel2, LV_GRID_ALIGN_STRETCH, 0, 1, LV_GRID_ALIGN_STRETCH, 1, 1); lv_obj_set_grid_dsc_array(panel2, grid_1_col_dsc, grid_1_row_dsc); lv_obj_set_grid_cell(panel2_title, LV_GRID_ALIGN_CENTER, 2, 1, LV_GRID_ALIGN_CENTER, 0, 1); lv_obj_set_grid_cell(led, LV_GRID_ALIGN_CENTER, 1, 1, LV_GRID_ALIGN_CENTER, 2, 1); lv_obj_set_grid_cell(sw, LV_GRID_ALIGN_CENTER, 3, 1, LV_GRID_ALIGN_CENTER, 2, 1); auto_step_timer = lv_timer_create(example1_increase_lvgl_tick, 100, NULL); } void example1_increase_lvgl_tick(lv_timer_t * t) { char buf[100]; snprintf(buf, sizeof(buf), "%d MB\r\n", SDCard_Size); lv_textarea_set_placeholder_text(SD_Size, buf); snprintf(buf, sizeof(buf), "%d MB\r\n", Flash_Size); lv_textarea_set_placeholder_text(FlashSize, buf); snprintf(buf, sizeof(buf), "%.2f V\r\n", BAT_analogVolts); lv_textarea_set_placeholder_text(BAT_Volts, buf); snprintf(buf, sizeof(buf), "X:%.2f Y:%.2f Z:%.2f\r\n", Accel.x, Accel.y, Accel.z); lv_textarea_set_placeholder_text(Board_angle, buf); snprintf(buf, sizeof(buf), "%d.%d.%d %d:%d:%d\r\n",datetime.year,datetime.month,datetime.day,datetime.hour,datetime.minute,datetime.second); lv_textarea_set_placeholder_text(RTC_Time, buf); if(Scan_finish) snprintf(buf, sizeof(buf), "WIFI: %d BLE: %d ..Scan Finish.\r\n",WIFI_NUM,BLE_NUM); else snprintf(buf, sizeof(buf), "WIFI: %d BLE: %d\r\n",WIFI_NUM,BLE_NUM); lv_textarea_set_placeholder_text(Wireless_Scan, buf); lv_slider_set_value(Backlight_slider, LCD_Backlight, LV_ANIM_ON); LVGL_Backlight_adjustment(LCD_Backlight); } // static void Music_create(lv_obj_t * parent) // { // static lv_obj_t * ctrl; // original_screen_bg_color = lv_obj_get_style_bg_color(parent, 0); // lv_obj_set_style_bg_color(parent, lv_color_hex(0x343247), 0); // ctrl = _lv_demo_music_main_create(parent); // } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// static void color_changer_create(lv_obj_t * parent) { static lv_palette_t palette[] = { LV_PALETTE_BLUE, LV_PALETTE_GREEN, LV_PALETTE_BLUE_GREY, LV_PALETTE_ORANGE, LV_PALETTE_RED, LV_PALETTE_PURPLE, LV_PALETTE_TEAL, _LV_PALETTE_LAST }; lv_obj_t * color_cont = lv_obj_create(parent); lv_obj_remove_style_all(color_cont); lv_obj_set_flex_flow(color_cont, LV_FLEX_FLOW_ROW); lv_obj_set_flex_align(color_cont, LV_FLEX_ALIGN_SPACE_EVENLY, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER); lv_obj_add_flag(color_cont, LV_OBJ_FLAG_FLOATING); lv_obj_set_style_bg_color(color_cont, lv_color_white(), 0); lv_obj_set_style_pad_right(color_cont, disp_size == DISP_SMALL ? LV_DPX(47) : LV_DPX(55), 0); lv_obj_set_style_bg_opa(color_cont, LV_OPA_COVER, 0); lv_obj_set_style_radius(color_cont, LV_RADIUS_CIRCLE, 0); if(disp_size == DISP_SMALL) lv_obj_set_size(color_cont, LV_DPX(52), LV_DPX(52)); else lv_obj_set_size(color_cont, LV_DPX(60), LV_DPX(60)); lv_obj_align(color_cont, LV_ALIGN_BOTTOM_RIGHT, - LV_DPX(10), - LV_DPX(10)); uint32_t i; for(i = 0; palette[i] != _LV_PALETTE_LAST; i++) { lv_obj_t * c = lv_btn_create(color_cont); lv_obj_set_style_bg_color(c, lv_palette_main(palette[i]), 0); lv_obj_set_style_radius(c, LV_RADIUS_CIRCLE, 0); lv_obj_set_style_opa(c, LV_OPA_TRANSP, 0); lv_obj_set_size(c, 20, 20); lv_obj_add_event_cb(c, color_event_cb, LV_EVENT_ALL, &palette[i]); lv_obj_clear_flag(c, LV_OBJ_FLAG_SCROLL_ON_FOCUS); } lv_obj_t * btn = lv_btn_create(parent); lv_obj_add_flag(btn, LV_OBJ_FLAG_FLOATING | LV_OBJ_FLAG_CLICKABLE); lv_obj_set_style_bg_color(btn, lv_color_white(), LV_STATE_CHECKED); lv_obj_set_style_pad_all(btn, 10, 0); lv_obj_set_style_radius(btn, LV_RADIUS_CIRCLE, 0); lv_obj_add_event_cb(btn, color_changer_event_cb, LV_EVENT_ALL, color_cont); lv_obj_set_style_shadow_width(btn, 0, 0); lv_obj_set_style_bg_img_src(btn, LV_SYMBOL_TINT, 0); if(disp_size == DISP_SMALL) { lv_obj_set_size(btn, LV_DPX(42), LV_DPX(42)); lv_obj_align(btn, LV_ALIGN_BOTTOM_RIGHT, -LV_DPX(15), -LV_DPX(15)); } else { lv_obj_set_size(btn, LV_DPX(50), LV_DPX(50)); lv_obj_align(btn, LV_ALIGN_BOTTOM_RIGHT, -LV_DPX(15), -LV_DPX(15)); } } static void color_changer_anim_cb(void * var, int32_t v) { lv_obj_t * obj =(lv_obj_t *) var; lv_coord_t max_w = lv_obj_get_width(lv_obj_get_parent(obj)) - LV_DPX(20); lv_coord_t w; if(disp_size == DISP_SMALL) { w = lv_map(v, 0, 256, LV_DPX(52), max_w); lv_obj_set_width(obj, w); lv_obj_align(obj, LV_ALIGN_BOTTOM_RIGHT, - LV_DPX(10), - LV_DPX(10)); } else { w = lv_map(v, 0, 256, LV_DPX(60), max_w); lv_obj_set_width(obj, w); lv_obj_align(obj, LV_ALIGN_BOTTOM_RIGHT, - LV_DPX(10), - LV_DPX(10)); } if(v > LV_OPA_COVER) v = LV_OPA_COVER; uint32_t i; for(i = 0; i < lv_obj_get_child_cnt(obj); i++) { lv_obj_set_style_opa(lv_obj_get_child(obj, i), v, 0); } } static void color_changer_event_cb(lv_event_t * e) { if(lv_event_get_code(e) == LV_EVENT_CLICKED) { lv_obj_t * color_cont = (lv_obj_t *)lv_event_get_user_data(e); if(lv_obj_get_width(color_cont) < LV_HOR_RES / 2) { lv_anim_t a; lv_anim_init(&a); lv_anim_set_var(&a, color_cont); lv_anim_set_exec_cb(&a, color_changer_anim_cb); lv_anim_set_values(&a, 0, 256); lv_anim_set_time(&a, 200); lv_anim_start(&a); } else { lv_anim_t a; lv_anim_init(&a); lv_anim_set_var(&a, color_cont); lv_anim_set_exec_cb(&a, color_changer_anim_cb); lv_anim_set_values(&a, 256, 0); lv_anim_set_time(&a, 200); lv_anim_start(&a); } } } static void color_event_cb(lv_event_t * e) { lv_event_code_t code = lv_event_get_code(e); lv_obj_t * obj = lv_event_get_target(e); if(code == LV_EVENT_FOCUSED) { lv_obj_t * color_cont = lv_obj_get_parent(obj); if(lv_obj_get_width(color_cont) < LV_HOR_RES / 2) { lv_anim_t a; lv_anim_init(&a); lv_anim_set_var(&a, color_cont); lv_anim_set_exec_cb(&a, color_changer_anim_cb); lv_anim_set_values(&a, 0, 256); lv_anim_set_time(&a, 200); lv_anim_start(&a); } } else if(code == LV_EVENT_CLICKED) { lv_palette_t * palette_primary = (lv_palette_t *)lv_event_get_user_data(e); lv_palette_t palette_secondary =(lv_palette_t) ((*palette_primary) + 3); /*Use another palette as secondary*/ if(palette_secondary >= _LV_PALETTE_LAST) palette_secondary =(lv_palette_t)(0); #if LV_USE_THEME_DEFAULT lv_theme_default_init(NULL, lv_palette_main(*palette_primary), lv_palette_main(palette_secondary), LV_THEME_DEFAULT_DARK, font_normal); #endif lv_color_t color = lv_palette_main(*palette_primary); lv_style_set_text_color(&style_icon, color); lv_chart_set_series_color(chart1, ser1, color); lv_chart_set_series_color(chart2, ser3, color); } } static void ta_event_cb(lv_event_t * e) { } static void birthday_event_cb(lv_event_t * e) { lv_event_code_t code = lv_event_get_code(e); lv_obj_t * ta = lv_event_get_target(e); if(code == LV_EVENT_FOCUSED) { if(lv_indev_get_type(lv_indev_get_act()) == LV_INDEV_TYPE_POINTER) { if(calendar == NULL) { lv_obj_add_flag(lv_layer_top(), LV_OBJ_FLAG_CLICKABLE); calendar = lv_calendar_create(lv_layer_top()); lv_obj_set_style_bg_opa(lv_layer_top(), LV_OPA_50, 0); lv_obj_set_style_bg_color(lv_layer_top(), lv_palette_main(LV_PALETTE_GREY), 0); if(disp_size == DISP_SMALL) lv_obj_set_size(calendar, 180, 200); else if(disp_size == DISP_MEDIUM) lv_obj_set_size(calendar, 200, 220); else lv_obj_set_size(calendar, 300, 330); lv_calendar_set_showed_date(calendar, 1990, 01); lv_obj_align(calendar, LV_ALIGN_CENTER, 0, 30); lv_obj_add_event_cb(calendar, calendar_event_cb, LV_EVENT_ALL, ta); lv_calendar_header_dropdown_create(calendar); } } } } static void calendar_event_cb(lv_event_t * e) { lv_event_code_t code = lv_event_get_code(e); lv_obj_t * ta = (lv_obj_t *)lv_event_get_user_data(e); lv_obj_t * obj = (lv_obj_t *)lv_event_get_current_target(e); if(code == LV_EVENT_VALUE_CHANGED) { lv_calendar_date_t d; lv_calendar_get_pressed_date(obj, &d); char buf[32]; lv_snprintf(buf, sizeof(buf), "%02d.%02d.%d", d.day, d.month, d.year); lv_textarea_set_text(ta, buf); lv_obj_del(calendar); calendar = NULL; lv_obj_clear_flag(lv_layer_top(), LV_OBJ_FLAG_CLICKABLE); lv_obj_set_style_bg_opa(lv_layer_top(), LV_OPA_TRANSP, 0); } } void Backlight_adjustment_event_cb(lv_event_t * e) { uint8_t Backlight = lv_slider_get_value(lv_event_get_target(e)); if (Backlight >= 0 && Backlight <= Backlight_MAX) { lv_slider_set_value(Backlight_slider, Backlight, LV_ANIM_ON); LCD_Backlight = Backlight; LVGL_Backlight_adjustment(Backlight); } else printf("Backlight out of range: %d\n", Backlight); } void LVGL_Backlight_adjustment(uint8_t Backlight) { Set_Backlight(Backlight); }