Description
I am trying to implement multiple animations in parallel, the lmeter needle does an animation cycle in 2 mins, image1 does an animation cycle in 1 min, image2 does an animation cycle in 1 min. below image describes the expected cadence. When running the program for a while, time of anim group1 and anim group2 are not synced any more.
What MCU/Processor/Board and compiler are you using?
Simulator
What LVGL version are you using?
LVGL v7.10.1
What do you want to achieve?
Sync animation cycle of two animation groups.
Code to reproduce
The following is my code to reproduce the issue.
lv_anim_t anim_img1;
lv_anim_init(&anim_img1);
lv_anim_set_var(&anim_img1, needle_img1);
lv_anim_set_exec_cb(&anim_img1, (lv_anim_exec_xcb_t)lv_img_set_angle);
lv_anim_set_values(&anim_img1, 3000, 6000);
lv_anim_set_time(&anim_img1, 500);
lv_anim_set_playback_time(&anim_img1, 500);
lv_anim_set_repeat_count(&anim_img1, LV_ANIM_REPEAT_INFINITE);
lv_anim_start(&anim_img1);
lv_anim_t anim_blink_img1;
lv_anim_init(&anim_blink_img1);
lv_anim_set_var(&anim_blink_img1, blink_img1);
lv_anim_set_values(&anim_blink_img1, 0, 255);
lv_anim_set_time(&anim_blink_img1, 250);
lv_anim_set_playback_time(&anim_blink_img1, 250);
lv_anim_set_repeat_count(&anim_blink_img1, LV_ANIM_REPEAT_INFINITE);
lv_anim_set_repeat_delay(&anim_blink_img1, 500);
lv_anim_set_exec_cb(&anim_blink_img1, (lv_anim_exec_xcb_t)blink_anim);
lv_anim_start(&anim_blink_img1);
lv_anim_t anim_blink_img2;
lv_anim_init(&anim_blink_img2);
lv_anim_set_var(&anim_blink_img2, blink_img2);
lv_anim_set_values(&anim_blink_img2, 0, 255);
lv_anim_set_time(&anim_blink_img2, 250);
lv_anim_set_delay(&anim_blink_img2, 500);
lv_anim_set_playback_time(&anim_blink_img2, 250);
lv_anim_set_repeat_count(&anim_blink_img2, LV_ANIM_REPEAT_INFINITE);
lv_anim_set_repeat_delay(&anim_blink_img2, 500);
lv_anim_set_exec_cb(&anim_blink_img2, (lv_anim_exec_xcb_t)blink_anim);
lv_anim_start(&anim_blink_img2);
static void blink_anim(lv_obj_t *image, lv_anim_value_t value){
lv_obj_set_style_local_image_opa(image, LV_IMG_PART_MAIN, LV_STATE_DEFAULT, value);
lv_obj_invalidate(image);
}