歩数をカウントできるようにする

It worked!
普通に歩いたときの歩数はうまく取得できているようです。今のところ閾値の上限を1200mG, 下限を981mGに設定しています。
簡単ですが以下にソースコードを貼り付けて説明をつけておきます。
特徴としては、xyzすべてについて処理してあるので、どの方向であってもちゃんとカウントされるという点です。

/**
 * Measuring the number of steps .
 * @file    Counter.cpp
 * @author  emboss
 * @date    2010/09/12
 * @version 1.0
 */
#include "StdAfx.h"
#include "Counter.h"

/**
 * コンストラクタ.
 * 変数初期化を行う.
 */
Counter::Counter(void)
{
	mSteps = 0;
	mMinThreshold =  981;
	mMaxThreshold = 1200;
	mStepFlag = FALSE;
}

/**
 * デストラクタ.
 */
Counter::~Counter(void)
{
}

/**
 * 歩数を0歩に戻す.
 */
void Counter::ResetSteps(void){
	mSteps = 0;
}


/**
 * 歩数を返す.
 */
UINT Counter::GetSteps(void){
	return mSteps;
}

/**
 * SetAcc:重力加速度を受け取る.
 * 歩数のカウントを行う.
 * @param    INT 重力加速度(mG)
 */
void Counter::SetAcc( INT acc){
	

	// もし、歩数カウント用のフラッグmStepFlagがTRUEの場合、閾値(上限)を超えている状態
	// そのため、閾値(下限)を超えたら1歩とカウントして、歩数カウント用フラグをFALSEに戻す。
	// mStepFlagがFALSEの場合は、閾値(上限)をこえたら
	// 歩数カウント用のフラッグmStepFlagをTRUEにしておく。
	if ( mStepFlag == TRUE ){
		if ( acc < mMinThreshold ){
			mSteps++;
			mStepFlag = FALSE;
		}
	} else {
		if ( acc > mMaxThreshold ){
			mStepFlag = TRUE;
		}
	}
}
/**
 * Measuring the number of steps .
 * @file    Counter.h
 * @author  emboss
 * @date    2010/09/12
 * @version 1.0
 */
#pragma once

class Counter
{
public:
	Counter(void);
	~Counter(void);
	void ResetSteps(void);		// カウンターを0に設定
	UINT GetSteps(void);		// 現在の歩数をカウント
	void SetAcc(INT);			// 重力加速度を渡す。

private:
	UINT mSteps ;		// 歩数カウンタ
	INT mMinThreshold;		// 閾値(下限)
	INT mMaxThreshold;		// 閾値(上限)
	BOOLEAN mStepFlag;		// ステップフラッグ、閾値(上限)を超えたらフラグを立てる
};

歩いたときだけではなく、走ったときにもうまくカウントが出来ているようです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です