I have the following code to get the average of a analog reading:
#define AVG_N 100
int values[AVG_N];
int val_index = 0;
void setup() {
Serial.begin(9600);
pinMode(A0, INPUT);
}
void loop() {
int val = analogRead(A0);
values[val_index++ % AVG_N] = val;
int average = 0;
for (int i = 0; i < AVG_N; i++) {
average += values[i];
}
average /= AVG_N;
Serial.print(val);
Serial.print(" ");
Serial.print(average);
Serial.print(" ");
Serial.println(0);
delay(10);
}
Sometimes the average is a negative number, here is an example of the output:
270 313 0
612 317 0
612 320 0
271 320 0
612 323 0
611 327 0
612 -324 0
271 -324 0
270 -324 0
269 -324 0
271 -324 0
270 -324 0
612 -321 0
What is causing this?