From: p15692025051 <846603105@qq.com> Date: Mon, 15 Apr 2024 01:35:00 +0000 (+0800) Subject: 跌倒算法优化 X-Git-Url: http://git.snicker.com.cn/sitemap.xml?a=commitdiff_plain;h=1ddf8f077765a33a359b385aab2b088d13c4530a;p=mirrors%2FASR3603_Z5.git 跌倒算法优化 --- diff --git a/2.sdk/sdk/gui/lv_drivers/indev/my_xMotion.c b/2.sdk/sdk/gui/lv_drivers/indev/my_xMotion.c index ebff1123..2ec0e0c3 100644 --- a/2.sdk/sdk/gui/lv_drivers/indev/my_xMotion.c +++ b/2.sdk/sdk/gui/lv_drivers/indev/my_xMotion.c @@ -9,7 +9,7 @@ #include "my_xMotion.h" #include "lv_drv_conf.h" #if USE_MY_XMOTION - +#include #include #include #include @@ -311,25 +311,62 @@ typedef struct float z; }acc_g_data_t; static uint16_t fall_counter = 0; +#if fall_detect_debug +extern int count_13 ; +extern int count_14 ; +extern int count_15 ; +extern int count_16 ; + +extern int count_10 ; +extern int count_9 ; +extern int count_8 ; +extern int count_7 ; +#endif +int fall_detect_count = 0; uint8_t gsensor_sc7a20_fall_detect(acc_g_data_t * acc) { - double acc_square = (double)((acc->x) * (acc->x)) + (double)((acc->y) * (acc->y)) + (double)((acc->z) * (acc->z)); - + double acc_square_t = (double)((acc->x) * (acc->x)) + (double)((acc->y) * (acc->y)) + (double)((acc->z) * (acc->z)); + double acc_square = sqrt(acc_square_t); // if(MMIApi_IsOpenGsensorTestWin()) // { // memcpy(&s_sc7a20_test_info, acc, sizeof(acc_g_data_t)); // } - //cplog_printf("acc_square:%f,%f,%f,%f\n",acc_square,acc->x,acc->y,acc->z); - if(acc_square < FALL_DETECH_LOW_THRESHOLD ) + +#if fall_detect_debug + if(acc_square<8) + count_7++; + else if(acc_square>8 && acc_square<9) + count_8++; + else if(acc_square>9 && acc_square<10) + count_9++; + else if(acc_square>10 && acc_square<11) + count_10++; + else if(acc_square>13 && acc_square<14) + count_13++; + else if(acc_square>14 && acc_square<15) + count_14++; + else if(acc_square>15 && acc_square<16) + count_15++; + else if(acc_square>16) + count_16++; +#endif + fall_detect_count++ ; + //cplog_printf("acc_square:% 12f,acc_square_t:% 12f,x:% 12f,y:% 12f,z:% 12f\n", + // acc_square,acc_square_t,acc->x,acc->y,acc->z); + //cplog_printf("acc_square:% 12f,count_13:% 4d,count_10:% 4d\n", + // acc_square,count_13,count_10); + + if(acc_square < FALL_DETECH_LOW_THRESHOLD )//7)// { fall_counter++; } - else + if(fall_detect_count >= 32*3) { + fall_detect_count = 0; fall_counter = 0; } - if(fall_counter >= FALL_COUNTER_THRESHOLD) + if(fall_counter >= FALL_COUNTER_THRESHOLD) //10)// { fall_counter = 0;