From dbdd5ce6db8e0e10f766c7f65973dfe39e50f827 Mon Sep 17 00:00:00 2001 From: asypost Date: Sun, 17 May 2026 13:33:27 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81bug=20fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bike.c | 22 +++++++++++++++++++++- widgets/speedmeter.c | 4 +++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/bike.c b/bike.c index b14b42a..f70eb85 100644 --- a/bike.c +++ b/bike.c @@ -18,7 +18,27 @@ LV_FONT_DECLARE(lv_font_din_16); static void battery_timer_cb(lv_timer_t* timer) { int8_t battery_percent = lv_battery_indicator_get_percentage(battery_indicator); - battery_percent -= 1; + battery_percent -= 1; + static int accelerating = 0; + + if (speed_meter != NULL) { + if (accelerating) { + + lv_speedmeter_set_speed(speed_meter, lv_speedmeter_get_speed(speed_meter) + 1.5f); + + if (lv_speedmeter_get_speed(speed_meter) >= 90.0f) { + accelerating = 0; + } + } + else { + lv_speedmeter_set_speed(speed_meter, lv_speedmeter_get_speed(speed_meter) - 1.0f); + + if (lv_speedmeter_get_speed(speed_meter) <= 0.0f) { + accelerating = 1; + } + } + } + if (battery_percent < 0) { battery_percent = 100; diff --git a/widgets/speedmeter.c b/widgets/speedmeter.c index cd653d2..284638b 100644 --- a/widgets/speedmeter.c +++ b/widgets/speedmeter.c @@ -193,7 +193,9 @@ lv_obj_t* lv_speedmeter_create(lv_obj_t* parent, int max_speed, const char* unit void lv_speedmeter_set_speed(lv_obj_t* obj, float speed) { lv_speedmeter_t* self = (lv_speedmeter_t*)obj; self->speed = speed; - lv_arc_set_value(self->speed_arc, (int)(self->speed / self->max_speed)); + int arc_value = (int)(self->speed / self->max_speed * 100.0); + lv_arc_set_value(self->speed_arc, arc_value); + lv_obj_send_event(self->speed_arc, LV_EVENT_VALUE_CHANGED, NULL); } float lv_speedmeter_get_speed(lv_obj_t* obj) {