I need help writing code for smoothing from 4 analog input, really new to the coding and just don't know how to alter from the example code. Any help would be greatly appreciated.
const int numReadings = 10;
int readings[numReadings]; // the readings from the analog input
int readIndex = 0; // the index of the current reading
int total = 0; // the running total
int average = 0; // the average
void setup() {
// initialize serial communication with computer:
Serial.begin(9600);
// initialize all the readings to 0:
for (int thisReading = 0; thisReading < numReadings; thisReading++) {
readings[thisReading] = 0;
}
}
void loop() {
// subtract the last reading:
total = total - readings[readIndex];
// read from the sensor:
readings[readIndex] = analogRead(inputPin);
// add the reading to the total:
total = total + readings[readIndex];
// advance to the next position in the array:
readIndex = readIndex + 1;
// if we're at the end of the array...
if (readIndex >= numReadings) {
// ...wrap around to the beginning:
readIndex = 0;
}
// calculate the average:
average = total / numReadings;
// send it to the computer as ASCII digits
Serial.println(average);
delay(1); // delay in between reads for stability
}
template <uint8_t N, class input_t = uint16_t, class sum_t = uint32_t>
class SMA {
public:
input_t operator()(input_t input) {
sum -= previousInputs[index];
sum += input;
previousInputs[index] = input;
if (++index == N)
index = 0;
return (sum + (N / 2)) / N;
static_assert(
sum_t(0) < sum_t(-1), // Check that sum_t is an unsigned type
"Error: sum data type should be an unsigned integer, otherwise, "
"the rounding operation in the return statement is invalid.");
}
private:
uint8_t index = 0;
input_t previousInputs[N] = {};
sum_t sum = 0;
};