• 大小: 1KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-29
  • 语言: 其他
  • 标签: 计步器  

资源简介

基于mpu6050计步器代码,stm32和51都能使用的的计步器代码

资源截图

代码片段和文件信息




#define P_P_DIFF 1000 /* 波峰-波谷的差值,即3D阈值 */
#define RISING_EDGE  1 /* 上升沿状态 */
#define FALLING_EDGE 0 /* 下降沿状态 */
#define FAST_WALK_TIME_LIMIT_MS 200  /* ms */
#define SLOW_WALK_TIME_LIMIT_MS 10000 /* 10s 内没有走一步 结束计步 */
#define STEP_OK 7 /* 7步法则 */

unsigned int lastPos = 0; /* 旧数据 */
unsigned int newMax = 0 newMin = 0; /* 波峰-波谷 */

bool walkSta = FALSE; /* 获得一次峰值状态 */
bool walkOkSta = FALSE; /* 连续10s内走了7步 有效行走状态 */
bool pSta = RISING_EDGE; /* 3D数据波形状态 */

long lastTime = 0; /* 上一次 walkSta 的时间 */
unsigned char stepOK = 0; /* 初始计步门限  滤除干扰 */
unsigned long stepCount = 0; /* 步数值 */

/*****************************************************************
** input: 3 axis or angle
** output: step count
** user read:
3 axis is filter value.
******************************************************************/
unsigned long Step_Count(float axis0 float axis1 float axis2){
unsigned int nowPos = 0;
int ppDiff = 0;
int timeDiff = 0;
/* 获取3D IMU */
nowPos = (unsigned int)powf(sqrtf(axis0) + sqrtf(axis1) + sqrtf(axis2) 0.5);
/* 得到波峰和波谷 */
if((pSta==RISING_EDGE) && (nowPos<=lastPos)){
pSta = FALLING_EDGE;
newMax = lastPos;
walkSta = TRUE;
}
else if((pSta==FALLING_EDGE) && (nowPos>lastPos)){
pSta = FALLING_EDGE;
newMin = lastPos;
walkSta = TRUE;
}
else{
walkSta = FALSE;
}
/* 更新3D step状态数据 */
lastPos = nowPos;

/* 有波峰或波谷 */
if(walkSta==TRUE){
walkSta = FALSE;
ppDiff = newMax - newMin; /* 波峰与波谷的差值 */
if(ppDiff > P_P_DIFF){
timeDiff = GetTime() - lastTime; /* 获取波峰和波谷的时间差 */
if(timeDiff < FAST_WALK_TIME_LIMIT_MS){  /* 波峰波谷时间差小于200ms的直接去掉 */
return stepCount;
}
else if(timeDiff > SLOW_WALK_TIME_LIMIT_MS){ /* 波峰波谷时间差大于10s的视为静止 */
walkOkSta = FALSE;
stepOK = 0;
return stepCount;
}
stepOK++;
if(stepOK>=STEP_OK){ /* 走7步之后更新状态 */
walkOkSta = TRUE;
}
lastTime = GetTime(); /* 更新时间 */
}
}

if(walkOkSta==TRUE){ /* 满足10s内走7步 */
stepCount += stepOK;
stepOK = 0;
}
return stepCount;
}




 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2238  2018-03-23 19:09  mpu6050.c

----------- ---------  ---------- -----  ----

                 2238                    1


评论

共有 条评论