Ok so I get this code to do the averaging : (written in C )
.
.
int sum[3];
int j;
int avg;
for(;;) //infinite loop
{
for(j=0;j<3;j++){
i = ReadSensor(); // function that keeps saving sensor values as int i
sum[j]=i;
}
avg=sum[0]+sum[1]+sum[2]+sum[3];
printf("Sonar: %d \r \n", avg >> 2);
}
.
.
Is this correct ? im shifting by 2 to divide by avg / 2^(2) which is 4
The problem is im expecting a value of about 15, however I get about 8–9 .. Im not sure why this is happening ?
Basically the sensor’s readings fluctuate between 15-17, I want to get an average instead of printing noise values. Is my code correct ? Then why do I get wrong outputs !?
The number of values read from sensor is required twice. First, to control the number of iterations of
forloop. Second, as the divisor of sum. Introduce a variable (say,N) to capture that.Also, the division by shifting does not sound right, because that restricts the number of readings from the sensor to power of two.