first commit
This commit is contained in:
commit
e6a42e28e9
4355 changed files with 4626605 additions and 0 deletions
83
libraries/lvgl/examples/widgets/meter/lv_example_meter_3.py
Normal file
83
libraries/lvgl/examples/widgets/meter/lv_example_meter_3.py
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
#!//opt/bin/lv_micropython -i
|
||||
import utime as time
|
||||
import lvgl as lv
|
||||
import display_driver
|
||||
from imagetools import get_png_info, open_png
|
||||
|
||||
# Register PNG image decoder
|
||||
decoder = lv.img.decoder_create()
|
||||
decoder.info_cb = get_png_info
|
||||
decoder.open_cb = open_png
|
||||
|
||||
# Create an image from the png file
|
||||
try:
|
||||
with open('../../assets/img_hand_min.png','rb') as f:
|
||||
img_hand_min_data = f.read()
|
||||
except:
|
||||
print("Could not find img_hand_min.png")
|
||||
sys.exit()
|
||||
|
||||
img_hand_min_dsc = lv.img_dsc_t({
|
||||
'data_size': len(img_hand_min_data),
|
||||
'data': img_hand_min_data
|
||||
})
|
||||
|
||||
# Create an image from the png file
|
||||
try:
|
||||
with open('../../assets/img_hand_hour.png','rb') as f:
|
||||
img_hand_hour_data = f.read()
|
||||
except:
|
||||
print("Could not find img_hand_hour.png")
|
||||
sys.exit()
|
||||
|
||||
img_hand_hour_dsc = lv.img_dsc_t({
|
||||
'data_size': len(img_hand_hour_data),
|
||||
'data': img_hand_hour_data
|
||||
})
|
||||
|
||||
def set_value(indic, v):
|
||||
meter.set_indicator_value(indic, v)
|
||||
#
|
||||
# A clock from a meter
|
||||
#
|
||||
|
||||
meter = lv.meter(lv.scr_act())
|
||||
meter.set_size(220, 220)
|
||||
meter.center()
|
||||
|
||||
# Create a scale for the minutes
|
||||
# 61 ticks in a 360 degrees range (the last and the first line overlaps)
|
||||
scale_min = meter.add_scale()
|
||||
meter.set_scale_ticks(scale_min, 61, 1, 10, lv.palette_main(lv.PALETTE.GREY))
|
||||
meter.set_scale_range(scale_min, 0, 60, 360, 270)
|
||||
|
||||
# Create another scale for the hours. It's only visual and contains only major ticks
|
||||
scale_hour = meter.add_scale()
|
||||
meter.set_scale_ticks(scale_hour, 12, 0, 0, lv.palette_main(lv.PALETTE.GREY)) # 12 ticks
|
||||
meter.set_scale_major_ticks(scale_hour, 1, 2, 20, lv.color_black(), 10) # Every tick is major
|
||||
meter.set_scale_range(scale_hour, 1, 12, 330, 300) # [1..12] values in an almost full circle
|
||||
|
||||
# LV_IMG_DECLARE(img_hand)
|
||||
|
||||
# Add the hands from images
|
||||
indic_min = meter.add_needle_img(scale_min, img_hand_min_dsc, 5, 5)
|
||||
indic_hour = meter.add_needle_img(scale_min, img_hand_hour_dsc, 5, 5)
|
||||
|
||||
# Create an animation to set the value
|
||||
a1 = lv.anim_t()
|
||||
a1.init()
|
||||
a1.set_values(0, 60)
|
||||
a1.set_repeat_count(lv.ANIM_REPEAT.INFINITE)
|
||||
a1.set_time(2000) # 2 sec for 1 turn of the minute hand (1 hour)
|
||||
a1.set_var(indic_min)
|
||||
a1.set_custom_exec_cb(lambda a1,val: set_value(indic_min,val))
|
||||
lv.anim_t.start(a1)
|
||||
|
||||
a2 = lv.anim_t()
|
||||
a2.init()
|
||||
a2.set_var(indic_hour)
|
||||
a2.set_time(24000) # 24 sec for 1 turn of the hour hand
|
||||
a2.set_values(0, 60)
|
||||
a2.set_custom_exec_cb(lambda a2,val: set_value(indic_hour,val))
|
||||
lv.anim_t.start(a2)
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue