que tal simplesmente um filtro suavizador IIR:
- Código: Selecionar todos
(...)
int f = get_sample(4);
// aqui vc usa o seu valor já filtrado
(...)
int get_sample(unsigned char SmoothLevel)
{
static int previous = 0;
previous = ( (previous << SmoothLevel) - previous + read_value_from_AD() ) >> SmoothLevel;
return previous;
}
perceba que cada valor que vc obtem é passado por uma media ponderada com os anteriores.
brinque com o valor SmoothLevel para dar o "amortecimento" que desejar.
Cuidado com a possível perda de bits na operação shift left. Certifique-se que sizeof(int) == 4
Os vencedores são aqueles que sabem o que fazer se perderem.
Os perdedores são aqueles que não sabem o que fazer se ganharem.