1- appscreen = lv .screen_active ()
2-
31from machine import Pin , I2C
42from qmi8658 import QMI8658
53import machine
64
7- sensor = QMI8658 (I2C (0 , sda = machine .Pin (48 ), scl = machine .Pin (47 )))
8-
9- templabel = lv .label (appscreen )
10- templabel .align (lv .ALIGN .TOP_MID , 0 , 10 )
11-
12- sliderx = lv .slider (appscreen )
13- sliderx .align (lv .ALIGN .CENTER , 0 , - 60 )
14- slidery = lv .slider (appscreen )
15- slidery .align (lv .ALIGN .CENTER , 0 , - 30 )
16- sliderz = lv .slider (appscreen )
17- sliderz .align (lv .ALIGN .CENTER , 0 , 0 )
18-
19- slidergx = lv .slider (appscreen )
20- slidergx .align (lv .ALIGN .CENTER , 0 , 30 )
21- slidergy = lv .slider (appscreen )
22- slidergy .align (lv .ALIGN .CENTER , 0 , 60 )
23- slidergz = lv .slider (appscreen )
24- slidergz .align (lv .ALIGN .CENTER , 0 , 90 )
25-
265def map_nonlinear (value : float ) -> int :
276 # Preserve sign and work with absolute value
287 sign = 1 if value >= 0 else - 1
@@ -36,8 +15,7 @@ def map_nonlinear(value: float) -> int:
3615 scaled = (sqrt_value / max_sqrt ) * 50.0 # Scale to [0, 50]
3716 return int (50.0 + (sign * scaled )) # Shift to [0, 100]
3817
39- import time
40- while appscreen == lv .screen_active ():
18+ def refresh (timer ):
4119 #print(f"""{sensor.temperature=} {sensor.acceleration=} {sensor.gyro=}""")
4220 templabel .set_text (f"IMU chip temperature: { sensor .temperature :.2f} °C" )
4321 ax = sensor .acceleration [0 ]
@@ -53,5 +31,31 @@ def map_nonlinear(value: float) -> int:
5331 slidergx .set_value (map_nonlinear (sensor .gyro [0 ]), lv .ANIM .OFF )
5432 slidergy .set_value (map_nonlinear (sensor .gyro [1 ]), lv .ANIM .OFF )
5533 slidergz .set_value (map_nonlinear (sensor .gyro [2 ]), lv .ANIM .OFF )
56- time .sleep_ms (100 )
5734
35+
36+ def janitor_cb (timer ):
37+ if lv .screen_active () != appscreen :
38+ print ("imutest.py backgrounded, cleaning up..." )
39+ janitor .delete ()
40+ refresh_timer .delete ()
41+
42+ sensor = QMI8658 (I2C (0 , sda = machine .Pin (48 ), scl = machine .Pin (47 )))
43+
44+ appscreen = lv .screen_active ()
45+ templabel = lv .label (appscreen )
46+ templabel .align (lv .ALIGN .TOP_MID , 0 , 10 )
47+ sliderx = lv .slider (appscreen )
48+ sliderx .align (lv .ALIGN .CENTER , 0 , - 60 )
49+ slidery = lv .slider (appscreen )
50+ slidery .align (lv .ALIGN .CENTER , 0 , - 30 )
51+ sliderz = lv .slider (appscreen )
52+ sliderz .align (lv .ALIGN .CENTER , 0 , 0 )
53+ slidergx = lv .slider (appscreen )
54+ slidergx .align (lv .ALIGN .CENTER , 0 , 30 )
55+ slidergy = lv .slider (appscreen )
56+ slidergy .align (lv .ALIGN .CENTER , 0 , 60 )
57+ slidergz = lv .slider (appscreen )
58+ slidergz .align (lv .ALIGN .CENTER , 0 , 90 )
59+
60+ refresh_timer = lv .timer_create (refresh , 100 , None )
61+ janitor = lv .timer_create (janitor_cb , 500 , None )
0 commit comments