// Moving average filter
// to remove a tremor when moving a rotary knob
const int potentiometerPin = 36;
int potValue = 0;
const int lengthAverageFilt = 100;
int filtArray[lengthAverageFilt];
int getAverage(int avArray[], int noElements){
int sum = 0;
for (int i = 0; i < noElements; i++){
sum = sum+avArray[i];
}
return sum/noElements;
}
void setup() {
Serial.begin(115200);
}
int filtArrayIndex = 0;
int filtValue = 0;
void loop() {
potValue = analogRead(potentiometerPin);
filtArray[filtArrayIndex] = potValue;
filtValue = getAverage(filtArray,lengthAverageFilt);
double degreeValue = (potValue * 360 ) / (4095);
Serial.print("Angular = ");
Serial.print(degreeValue);
Serial.print("degrees");
double degreeValueFilt = (filtValue * 360 ) / (4095);
Serial.print("Angular filtered = ");
Serial.print(degreeValueFilt);
Serial.println("degrees");
filtArrayIndex++;
if (filtArrayIndex==lengthAverageFilt){
filtArrayIndex = 0;
}
delay(100);
}