Hi I would like to understand what I have to change in this sketch.
My aim is to take every time 10 output of the imu (10 y accelerations), to do the mean and to test if that mean could be over on a threshold. I don't understand the reason why the average in serial monitor is always 0. Can you help me please?
I am using an Arduino Uno rev 2
#include <Arduino_LSM6DS3.h>
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
float Athr = -0.1;
float Bthr = -0.2;
void setup() {
// initialize serial communication with computer:
Serial.begin(9600);
IMU.begin();
// initialize all the readings to 0:
for (int thisReading = 0; thisReading < numReadings; thisReading++) {
readings[thisReading] = 0;
}
}
void loop() {
float x,y,z;
IMU.readAcceleration(x, y, z);
// subtract the last reading:
total = total - readings[readIndex];
// read from the sensor:
readings[readIndex] = y;
// 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
}