Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Arduino/libraries/RunningAverage/RunningAverage.h
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
80 lines (57 sloc)
2.13 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#pragma once | |
// | |
// FILE: RunningAverage.h | |
// AUTHOR: Rob.Tillaart@gmail.com | |
// VERSION: 0.4.3 | |
// DATE: 2016-dec-01 | |
// PURPOSE: Arduino library to calculate the running average by means of a circular buffer | |
// URL: https://github.com/RobTillaart/RunningAverage | |
#include "Arduino.h" | |
#define RUNNINGAVERAGE_LIB_VERSION (F("0.4.3")) | |
class RunningAverage | |
{ | |
public: | |
explicit RunningAverage(const uint16_t size); | |
~RunningAverage(); | |
void clear(); | |
void add(const float value) { addValue(value); }; | |
void addValue(const float value); | |
void fillValue(const float value, const uint16_t number); | |
float getValue(const uint16_t position); | |
float getAverage(); // iterates over all elements. | |
float getFastAverage() const; // reuses previous calculated values. | |
// return statistical characteristics of the running average | |
float getStandardDeviation() const; | |
float getStandardError() const; | |
// returns min/max added to the data-set since last clear | |
float getMin() const { return _min; }; | |
float getMax() const { return _max; }; | |
// returns min/max from the values in the internal buffer | |
float getMinInBuffer() const; | |
float getMaxInBuffer() const; | |
// return true if buffer is full | |
bool bufferIsFull() const { return _count == _size; }; | |
float getElement(uint16_t index) const; | |
uint16_t getSize() const { return _size; } | |
uint16_t getCount() const { return _count; } | |
// use not all elements just a part from 0..partial-1 | |
// (re)setting partial will clear the internal buffer. | |
void setPartial(const uint16_t partial = 0); // 0 ==> use all | |
uint16_t getPartial() { return _partial; }; | |
// get some stats from the last count additions. | |
float getAverageLast(uint16_t count); | |
float getMinInBufferLast(uint16_t count); | |
float getMaxInBufferLast(uint16_t count); | |
// Experimental 0.4.3 | |
float getAverageSubset(uint16_t start, uint16_t count); | |
protected: | |
uint16_t _size; | |
uint16_t _count; | |
uint16_t _index; | |
uint16_t _partial; | |
float _sum; | |
float* _array; | |
float _min; | |
float _max; | |
}; | |
// -- END OF FILE -- | |