察觉到阿杜伊诺的点头

Detecting a nod with Arduino

本文关键字:阿杜 察觉到      更新时间:2023-10-16

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

我需要识别代表简单点头的价值观中的模式,就像这样。有人告诉我我必须使用这样的东西:

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

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

我自己也想过检查一下某种波形,点头实际上是。旧值将在一段时间内低于或高于其他值,但不确定如何做到这一点,因为我无法暂停我的代码,因为它也在检查其他传感器(麦克风和指南针)的输出。

当传感器处于静止状态时,您的配偶要有一个阈值或点亮自然头部移动嗯,你可以试试这段代码,我认为它会为你工作:

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;
}