跌倒报警算法优化
authorp15692025051 <846603105@qq.com>
Sat, 23 Dec 2023 06:23:38 +0000 (14:23 +0800)
committerp15692025051 <846603105@qq.com>
Sat, 23 Dec 2023 06:23:38 +0000 (14:23 +0800)
2.sdk/sdk/gui/lv_drivers/indev/my_xMotion.c

index 9ec4cee..d98bef1 100644 (file)
@@ -299,11 +299,11 @@ short Gsensor_x[32];
 short Gsensor_y[32];
 short Gsensor_z[32];
 int Gsensor_xyz_len = 0;
-#define ACC_0G_X      8192 //4096
-#define ACC_0G_Y      8192   
-#define ACC_0G_Z      8192       
-#define  FALL_DETECH_LOW_THRESHOLD 45
-#define FALL_COUNTER_THRESHOLD 5
+#define ACC_0G_X      4096//8192 //4096
+#define ACC_0G_Y      4096//8192   
+#define ACC_0G_Z      4096//8192       
+#define  FALL_DETECH_LOW_THRESHOLD 35
+#define FALL_COUNTER_THRESHOLD 7
 typedef struct
 {
     float x;
@@ -319,7 +319,7 @@ uint8_t gsensor_sc7a20_fall_detect(acc_g_data_t * acc)
     // {
     //   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 )
        {
         fall_counter++;
@@ -390,11 +390,19 @@ static void My_Motion_Main(VOID * argv)
                 // s_acc.x= Gsensor_x[i];
                 // s_acc.y= Gsensor_y[i];
                 // s_acc.z= Gsensor_z[i];
-                s_acc.x = (float)((Gsensor_x[i]*9.8f)/((uint16_t)ACC_0G_X));
-                s_acc.y = (float)((Gsensor_y[i]*9.8f)/((uint16_t)ACC_0G_Y));
-                s_acc.z = (float)((Gsensor_z[i]*9.8f)/((uint16_t)ACC_0G_Z));
+                // s_acc.x = (float)((Gsensor_x[i]*9.8f)/((uint16_t)ACC_0G_X));
+                // s_acc.y = (float)((Gsensor_y[i]*9.8f)/((uint16_t)ACC_0G_Y));
+                // s_acc.z = (float)((Gsensor_z[i]*9.8f)/((uint16_t)ACC_0G_Z));
+                s_acc.x = ((float)Gsensor_x[i]/100);
+                s_acc.y = ((float)Gsensor_y[i]/100);
+                s_acc.z = ((float)Gsensor_z[i]/100);
+                //cplog_printf("x:%d,y:%d,z:%d!!!\n",Gsensor_x[i],Gsensor_y[i],Gsensor_z[i]);
                 if(gsensor_sc7a20_fall_detect(&s_acc) == 1)//跌倒报警
-                                   mmi_gsensor_sensor_fall_alarm();    
+                {
+                    //cplog_printf("mmi_gsensor_sensor_fall_alarm x:%d,y:%d,z:%d!!!\n",Gsensor_x[i],Gsensor_y[i],Gsensor_z[i]);
+                    mmi_gsensor_sensor_fall_alarm();
+                }
+                                       
             }
 #if USE_HX3918
             hx3918_set_gsen_fifo(Gsensor_x,Gsensor_y,Gsensor_z,Gsensor_xyz_len);