GY-63_MS5611/libraries/AverageAngle
2020-11-27 11:10:47 +01:00
..
examples update libraries A-D 2020-11-27 11:10:47 +01:00
AverageAngle.cpp update libraries A-D 2020-11-27 11:10:47 +01:00
AverageAngle.h update libraries A-D 2020-11-27 11:10:47 +01:00
library.json update libraries A-D 2020-11-27 11:10:47 +01:00
library.properties update libraries A-D 2020-11-27 11:10:47 +01:00
LICENSE update libraries A-D 2020-11-27 11:10:47 +01:00
README.md update libraries A-D 2020-11-27 11:10:47 +01:00

AverageAngle

Arduino library to calculate correctly the average of multiple angles

Description

AverageAngle is an class to calculate the average of angles.

This is especially useful when angles are around 0 degrees, e.g. from a compass sensor or the resultant of a track. Example, the average angle of 359 and 1 is 0, not 179 (most of the time)

Furthermore the AverageAngle can also include the length (weight) of the angle as if it is a vector. Default this length is set to 1 so all angles are by default of equal weight.

Example: The average angle of 359 (len=2) and 1(len=1) is 359.something not zero.

Operation

If you want to average 5 compass readings you can just add the angles and do not use the length parameter.

  AA.reset();
  for (int i = 0; i < 5; i++)
  {
    AA.add(compass.readHeading());
    delay(100); // e.g. compass needs some time
  }
  Serial.println(AA.getAverage());

If you want to average a track, e.g. 5 steps North, 3 steps west etc, you need to include the length of each step.

  AA.reset();
  AA.add(90, 5); 	// 5 steps north
  AA.add(180, 3);	// 3 steps west
  Serial.println(AA.getAverage());
  Serial.println(AA.getTotalLength());