0

特に誰かがうなずいているときに、誰かの頭の動きを検出する必要があるアプリケーションに取り組んでいます。これを行うために、加速度計 (MPU-6050) を備えたキャップに Arduino を配置しました。加速度計は、水平から少し上を向いている場合は 0 から 10 の値を返し、少し下を向いている場合は 0 から -10 の値を返します。

こののように、単純なうなずきを表す値のパターンを認識する必要があります。次のようなものを使用する必要があると言われました。

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

これで100回ループ(0.5秒程度)の平均値が得られますが、人がうなずいているか否かはresult.

私自身、ある種の波形をチェックしようと考えましたが、実際にはうなずきます。古い値はしばらくの間、他の値よりも低くまたは高くなりますが、他のセンサー (マイクとコンパス) からの出力もチェックしているため、コードを一時停止できないため、これを行う方法がわかりません。

4

1 に答える 1

-1

センサーがアイドリング/静的状態または小さな Naturle の頭の動きにある場合、配偶者はしきい値を設定します。うーん、このコードを試すことができます。うまくいくと思います。

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;
}
于 2013-11-09T08:10:29.077 に答える