基本問題:單片機ad采樣,連續采樣十次,對這十次數據取平均值。
注意:最開始的一次就是用當次的數據,以后每更新一個數據就取當前數據加上前九個數據,取平均。
先看代碼:
static int _filter(int m)
{
static int flag_first = 0, _buff[10], sum;
const int _buff_max = 10;
int i;
if(flag_first == 0)
{
flag_first = 1;
for(i = 0, sum = 0; i < _buff_max; i++)
{
_buff[i] = m;
sum += _buff[i];
}
return m;
}
else
{
sum -= _buff[0];
for(i = 0; i < (_buff_max - 1); i++)
{
_buff[i] = _buff[i + 1];
}
_buff[9] = m;
sum += _buff[9];
i = sum / 10.0;
return i;
}
}
前九次(不足十個數據),用第一個數據補。
