Skip to content

Commit 871a203

Browse files
imutest: fix
1 parent 18ddeae commit 871a203

1 file changed

Lines changed: 28 additions & 24 deletions

File tree

  • internal_filesystem/apps/com.example.imutest/assets
Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,7 @@
1-
appscreen = lv.screen_active()
2-
31
from machine import Pin, I2C
42
from qmi8658 import QMI8658
53
import 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-
265
def 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

Comments
 (0)