Lo que está haciendo el programa del enlace es hacer la media continua de todas las medidas de forma acumulada un cierto número de iteraciones, en vez de hacer eso, es más simple implementar un filtro paso bajo con un coeficiente alpha que se pueda configurar.
De todas formas, para la lectura que está haciendo Lisergio, lo mejor es hacer un conjunto de medidas y tomar la media cada vez por conjunto de lecturas. Es igual a lo que comentas en el enlace pero todo en un bucle cerrado:
#define NUM_READINGS 8
En alguna parte del código hacer lo siguiente:
long sensorValue = 0;
for ( uint8_t i = 0; i < NUM_READINGS; i++ )
{
sensorValue += analogRead ( sensorPin );
}
// Sacamos la media
sensorValue /= 8;
if ( sensorValue > medida_activacion )
{...}
Por otro lado yo usaría el mismo método para calcular medida_activacion, es decir tomar unos cuantos valores y quedarte con la media.