用Arduino检测点头

时间:2013-11-07 21:00:24

标签: c++ arduino accelerometer gesture gesture-recognition

我正在开发一个应用程序,我需要检测某人头部的移动,特别是当有人点头时。为此,我们将Arduino放置在带加速度计(MPU-6050)的盖子上。加速度计返回0到10之间的值,从水平到向上看,0和-10用于向下看。

我需要识别代表简单点头的值中的模式,例如this。我被告知我必须使用类似的东西:

for(int x = 0; x < 100; x++){
    result += abs(oldvalue) + abs(newvalue) / 2;
}

这将获得超过100个循环的平均值(如0.5秒),但根据result,无法确定某个人是否点头。

我自己想过检查某种波形,实际点头。旧值将暂时低于或高于其他值,但不知道如何执行此操作,因为我无法暂停我的代码,因为它还检查其他传感器的输出(麦克风和指南针)。

1 个答案:

答案 0 :(得分:-1)

当传感器处于空转/静态时,您配偶有一个阈值 或者小小的自然头部运动 嗯,你可以尝试这个代码,我认为它适合你:

void loop()
{
    int CurrentState = analogRead(AccPin);
     if(CurrentState > ThresHold || CurrentState < ThresHold)
     {boolean IsNoding = CheckForNoding();} 
     if(IsNoding)
     {
         //Do Whatever You Want
     }
     else
     delay(TimeInterVal); 
}

boolean CheckForNoding()
{ 
  Count = 0;
  boolean State = false;
  while(Count<MinToConsiderNode) // Your Case 100?!
  {
      int CurrentState = analogRead(AccPin);
      if(CurrentState > ThresHold || CurrentState < ThresHold)
      {
          int Count ++;
          delay(TimeInterval) // What you Think Should Be The Time Period Between each => Head Going Up or Down
          State = true;
      }
      else 
        {
            State = false;
            break;
        }
  }

    return State;
}
相关问题