#!//opt/bin/lv_micropython -i import utime as time import lvgl as lv import display_driver def set_value(indic,v): meter.set_indicator_end_value(indic, v) # # A meter with multiple arcs # meter = lv.meter(lv.scr_act()) meter.center() meter.set_size(200, 200) # Remove the circle from the middle meter.remove_style(None, lv.PART.INDICATOR) # Add a scale first scale = meter.add_scale() meter.set_scale_ticks(scale, 11, 2, 10, lv.palette_main(lv.PALETTE.GREY)) meter.set_scale_major_ticks(scale, 1, 2, 30, lv.color_hex3(0xeee), 10) meter.set_scale_range(scale, 0, 100, 270, 90) # Add a three arc indicator indic1 = meter.add_arc(scale, 10, lv.palette_main(lv.PALETTE.RED), 0) indic2 = meter.add_arc(scale, 10, lv.palette_main(lv.PALETTE.GREEN), -10) indic3 = meter.add_arc(scale, 10, lv.palette_main(lv.PALETTE.BLUE), -20) # Create an animation to set the value a1 = lv.anim_t() a1.init() a1.set_values(0, 100) a1.set_time(2000) a1.set_repeat_delay(100) a1.set_playback_delay(100) a1.set_playback_time(500) a1.set_var(indic1) a1.set_repeat_count(lv.ANIM_REPEAT.INFINITE) a1.set_custom_exec_cb(lambda a,val: set_value(indic1,val)) lv.anim_t.start(a1) a2 = lv.anim_t() a2.init() a2.set_values(0, 100) a2.set_time(1000) a2.set_repeat_delay(100) a2.set_playback_delay(100) a2.set_playback_time(1000) a2.set_var(indic2) a2.set_repeat_count(lv.ANIM_REPEAT.INFINITE) a2.set_custom_exec_cb(lambda a,val: set_value(indic2,val)) lv.anim_t.start(a2) a3 = lv.anim_t() a3.init() a3.set_values(0, 100) a3.set_time(1000) a3.set_repeat_delay(100) a3.set_playback_delay(100) a3.set_playback_time(2000) a3.set_var(indic3) a3.set_repeat_count(lv.ANIM_REPEAT.INFINITE) a3.set_custom_exec_cb(lambda a,val: set_value(indic3,val)) lv.anim_t.start(a3)