diff --git a/CHANGELOG.md b/CHANGELOG.md index 0181ec3..afd70ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,11 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## [0.4.8] - 2025-08-01 +- add array example +- update examples +- minor edits + ## [0.4.7] - 2024-08-12 - Fix #33, add **float getCoefficientOfVariation()** - update readme.md diff --git a/LICENSE b/LICENSE index 48868ba..dce256a 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2012-2024 Rob Tillaart +Copyright (c) 2012-2025 Rob Tillaart Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index ff06d81..3ddb47a 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,7 @@ update the internal **\_sum**. - https://github.com/RobTillaart/Correlation - https://github.com/RobTillaart/GST - Golden standard test metrics - https://github.com/RobTillaart/Histogram +- https://github.com/RobTillaart/infiniteAverage - https://github.com/RobTillaart/RunningAngle - https://github.com/RobTillaart/RunningAverage - https://github.com/RobTillaart/RunningMedian @@ -43,6 +44,10 @@ update the internal **\_sum**. - https://github.com/RobTillaart/Statistic - https://github.com/RobTillaart/Student +For printing floats in scientific or engineering format + +https://github.com/RobTillaart/printHelpers + ## Interface diff --git a/RunningAverage.cpp b/RunningAverage.cpp index 92afbc7..b7b3c1a 100644 --- a/RunningAverage.cpp +++ b/RunningAverage.cpp @@ -1,7 +1,7 @@ // // FILE: RunningAverage.cpp // AUTHOR: Rob Tillaart -// VERSION: 0.4.7 +// VERSION: 0.4.8 // DATE: 2011-01-30 // PURPOSE: Arduino library to calculate the running average by means of a circular buffer // URL: https://github.com/RobTillaart/RunningAverage diff --git a/RunningAverage.h b/RunningAverage.h index d9f11ff..1c7eb18 100644 --- a/RunningAverage.h +++ b/RunningAverage.h @@ -2,7 +2,7 @@ // // FILE: RunningAverage.h // AUTHOR: Rob Tillaart -// VERSION: 0.4.7 +// VERSION: 0.4.8 // DATE: 2011-01-30 // PURPOSE: Arduino library to calculate the running average by means of a circular buffer // URL: https://github.com/RobTillaart/RunningAverage @@ -14,7 +14,7 @@ #include "Arduino.h" -#define RUNNINGAVERAGE_LIB_VERSION (F("0.4.7")) +#define RUNNINGAVERAGE_LIB_VERSION (F("0.4.8")) class RunningAverage diff --git a/examples/fillValue/fillValue.ino b/examples/fillValue/fillValue.ino index 2f26348..ac679e6 100644 --- a/examples/fillValue/fillValue.ino +++ b/examples/fillValue/fillValue.ino @@ -15,31 +15,36 @@ int samples = 0; uint32_t start, stop; -void setup(void) +void setup(void) { Serial.begin(115200); - Serial.print("Demo RunningAverage lib - fillValue "); + Serial.println(); + Serial.println(__FILE__); Serial.print("RUNNINGAVERAGE_LIB_VERSION: "); Serial.println(RUNNINGAVERAGE_LIB_VERSION); + Serial.println(); + delay(10); + // explicitly start clean + myRA.clear(); for (int i = 0; i < 15; i++) { measure_duration(i); } - + Serial.println(); } -void loop(void) +void loop(void) { long rn = random(0, 100); myRA.addValue(rn / 100.0); samples++; Serial.print("Running Average: "); Serial.println(myRA.getAverage(), 4); - + if (samples == 300) { samples = 0; diff --git a/examples/ra_300/ra_300.ino b/examples/ra_300/ra_300.ino index 19b2d34..70f077e 100644 --- a/examples/ra_300/ra_300.ino +++ b/examples/ra_300/ra_300.ino @@ -20,8 +20,12 @@ void setup(void) Serial.println(__FILE__); Serial.print("RUNNINGAVERAGE_LIB_VERSION: "); Serial.println(RUNNINGAVERAGE_LIB_VERSION); - + Serial.println(); + + delay(10); + // explicitly start clean myRA.clear(); + for (uint16_t i = 0; i < 1000; i++) { myRA.addValue(i); diff --git a/examples/ra_300_last/ra_300_last.ino b/examples/ra_300_last/ra_300_last.ino index 8167168..a8b53c8 100644 --- a/examples/ra_300_last/ra_300_last.ino +++ b/examples/ra_300_last/ra_300_last.ino @@ -20,8 +20,12 @@ void setup(void) Serial.println(__FILE__); Serial.print("RUNNINGAVERAGE_LIB_VERSION: "); Serial.println(RUNNINGAVERAGE_LIB_VERSION); + Serial.println(); + delay(10); + // explicitly start clean myRA.clear(); + for (uint16_t i = 0; i < 1000; i++) { myRA.addValue(i); // random(1000)); (i); diff --git a/examples/ra_FastAverageTest/ra_FastAverageTest.ino b/examples/ra_FastAverageTest/ra_FastAverageTest.ino index 2a6b6cd..dfd9036 100644 --- a/examples/ra_FastAverageTest/ra_FastAverageTest.ino +++ b/examples/ra_FastAverageTest/ra_FastAverageTest.ino @@ -26,6 +26,7 @@ void setup(void) Serial.println(__FILE__); Serial.print("RUNNINGAVERAGE_LIB_VERSION: "); Serial.println(RUNNINGAVERAGE_LIB_VERSION); + Serial.println(); // explicitly start clean myRA.clear(); @@ -58,7 +59,7 @@ void measure_duration() Serial.println(stop - start); delay(10); Serial.println(); -} +} void test(long n) diff --git a/examples/ra_MinMaxBufferTest/ra_MinMaxBufferTest.ino b/examples/ra_MinMaxBufferTest/ra_MinMaxBufferTest.ino index b86593a..89db4ea 100644 --- a/examples/ra_MinMaxBufferTest/ra_MinMaxBufferTest.ino +++ b/examples/ra_MinMaxBufferTest/ra_MinMaxBufferTest.ino @@ -20,7 +20,11 @@ void setup(void) Serial.println(__FILE__); Serial.print("RUNNINGAVERAGE_LIB_VERSION: "); Serial.println(RUNNINGAVERAGE_LIB_VERSION); - myRA.clear(); // explicitly start clean + Serial.println(); + + delay(10); + // explicitly start clean + myRA.clear(); Serial.println("\nCNT\tMIN\tMINBUF\tMAX\tMAXBUF"); } diff --git a/examples/ra_MinMaxTest/ra_MinMaxTest.ino b/examples/ra_MinMaxTest/ra_MinMaxTest.ino index 6418679..71831c8 100644 --- a/examples/ra_MinMaxTest/ra_MinMaxTest.ino +++ b/examples/ra_MinMaxTest/ra_MinMaxTest.ino @@ -20,7 +20,11 @@ void setup(void) Serial.println(__FILE__); Serial.print("RUNNINGAVERAGE_LIB_VERSION: "); Serial.println(RUNNINGAVERAGE_LIB_VERSION); - myRA.clear(); // explicitly start clean + Serial.println(); + + delay(10); + // explicitly start clean + myRA.clear(); Serial.println("\nCNT\tMIN\tAVG\tMAX"); } diff --git a/examples/ra_array/ra_array.ino b/examples/ra_array/ra_array.ino new file mode 100644 index 0000000..76e0ca6 --- /dev/null +++ b/examples/ra_array/ra_array.ino @@ -0,0 +1,90 @@ +// +// FILE: ra_array.ino +// AUTHOR: Rob Tillaart +// PURPOSE: show working of an array of runningAverage objects +// URL: https://github.com/RobTillaart/RunningAverage + + +#include "RunningAverage.h" + +// note the differrent sizes. +//RunningAverage RA0(10); +//RunningAverage RA1(15); +//RunningAverage RA2(20); +//RunningAverage RA3(10); +//RunningAverage RA4(15); +//RunningAverage RA5(20); +// +//RunningAverage RA[6] = { RA0, RA1, RA2, RA3, RA4, RA5 }; + +RunningAverage RA[6] = +{ + RunningAverage(5), + RunningAverage(7), + RunningAverage(9), + RunningAverage(11), + RunningAverage(13), + RunningAverage(15), +}; + +uint32_t samples = 0; + + +void setup(void) +{ + Serial.begin(115200); + Serial.println(); + Serial.println(__FILE__); + Serial.print("RUNNINGAVERAGE_LIB_VERSION: "); + Serial.println(RUNNINGAVERAGE_LIB_VERSION); + Serial.println(); + + // explicitly start clean + for (int i = 0; i < 6; i++) + { + RA[i].clear(); + } + + // check different sizes. + for (int i = 0; i < 6; i++) + { + Serial.print('\t'); + Serial.print(RA[i].getSize()); + } + Serial.println(); +} + + +void loop(void) +{ + // read 6 ADC's + for (int i = 0; i < 6; i++) + { + int value = analogRead(A0 + i); + // optional conversion here + RA[i].addValue(value); + //Serial.print(value); + //Serial.print("\t"); + } + //Serial.println(); + + // print a separator every 20 lines + if (samples % 20 == 0) + { + Serial.println("\n"); + } + samples++; + + Serial.print(samples); + for (int i = 0; i < 6; i++) + { + Serial.print('\t'); + Serial.print(RA[i].getAverage(), 2); + } + Serial.println(); + + delay(50); +} + + +// -- END OF FILE -- diff --git a/examples/ra_fillValue_test/ra_fillValue_test.ino b/examples/ra_fillValue_test/ra_fillValue_test.ino index 1c198a9..5f3bd76 100644 --- a/examples/ra_fillValue_test/ra_fillValue_test.ino +++ b/examples/ra_fillValue_test/ra_fillValue_test.ino @@ -22,7 +22,11 @@ void setup(void) Serial.println(__FILE__); Serial.print("RUNNINGAVERAGE_LIB_VERSION: "); Serial.println(RUNNINGAVERAGE_LIB_VERSION); + Serial.println(); + delay(10); + // explicitly start clean + myRA.clear(); for (int i = 0; i < 15; i++) { diff --git a/examples/ra_getAverageSubset/ra_getAverageSubset.ino b/examples/ra_getAverageSubset/ra_getAverageSubset.ino index 36048e6..240eade 100644 --- a/examples/ra_getAverageSubset/ra_getAverageSubset.ino +++ b/examples/ra_getAverageSubset/ra_getAverageSubset.ino @@ -20,8 +20,11 @@ void setup(void) Serial.println(__FILE__); Serial.print("RUNNINGAVERAGE_LIB_VERSION: "); Serial.println(RUNNINGAVERAGE_LIB_VERSION); + Serial.println(); - myRA.clear(); // explicitly start clean + delay(10); + // explicitly start clean + myRA.clear(); for (int i = 0; i < 20; i++) { diff --git a/examples/ra_getCoefficientOfVariation/ra_getCoefficientOfVariation.ino b/examples/ra_getCoefficientOfVariation/ra_getCoefficientOfVariation.ino index 533079d..7ddf962 100644 --- a/examples/ra_getCoefficientOfVariation/ra_getCoefficientOfVariation.ino +++ b/examples/ra_getCoefficientOfVariation/ra_getCoefficientOfVariation.ino @@ -24,8 +24,11 @@ void setup(void) Serial.println(__FILE__); Serial.print("RUNNINGAVERAGE_LIB_VERSION: "); Serial.println(RUNNINGAVERAGE_LIB_VERSION); + Serial.println(); - myRA.clear(); // explicitly start clean + delay(10); + // explicitly start clean + myRA.clear(); for (int i = 0; i < 10; i++) { diff --git a/examples/ra_getValue/ra_getValue.ino b/examples/ra_getValue/ra_getValue.ino index 784c0dd..1c84bad 100644 --- a/examples/ra_getValue/ra_getValue.ino +++ b/examples/ra_getValue/ra_getValue.ino @@ -20,7 +20,11 @@ void setup(void) Serial.println(__FILE__); Serial.print("RUNNINGAVERAGE_LIB_VERSION: "); Serial.println(RUNNINGAVERAGE_LIB_VERSION); - myRA.clear(); // explicitly start clean + Serial.println(); + + delay(10); + // explicitly start clean + myRA.clear(); } diff --git a/examples/ra_hour/ra_hour.ino b/examples/ra_hour/ra_hour.ino index f9e7f3d..bb5cac8 100644 --- a/examples/ra_hour/ra_hour.ino +++ b/examples/ra_hour/ra_hour.ino @@ -2,7 +2,7 @@ // FILE: runningAverageHour.ino // AUTHOR: Rob Tillaart // DATE: 2012-12-30 -// PURPOSE: show working of runningAverage per hour +// PURPOSE: show working of runningAverage per hour // in 2 steps - last minute + last hour // 3 or more steps also possible // URL: https://github.com/RobTillaart/RunningAverage @@ -17,26 +17,28 @@ RunningAverage raHour(60); int samples = 0; -void setup(void) +void setup(void) { Serial.begin(115200); Serial.println(); Serial.println(__FILE__); Serial.print("RUNNINGAVERAGE_LIB_VERSION: "); Serial.println(RUNNINGAVERAGE_LIB_VERSION); + Serial.println(); + raHour.clear(); raMinute.clear(); } -void loop(void) +void loop(void) { long rn = random(0, 100); raMinute.addValue(rn); samples++; - + if (samples % 60 == 0) raHour.addValue(raMinute.getAverage()); - + Serial.print(" raMinute: "); Serial.print(raMinute.getAverage(), 4); Serial.print(" raHour: "); diff --git a/examples/ra_partial/ra_partial.ino b/examples/ra_partial/ra_partial.ino index 03211c9..46b5c19 100644 --- a/examples/ra_partial/ra_partial.ino +++ b/examples/ra_partial/ra_partial.ino @@ -20,8 +20,12 @@ void setup(void) Serial.println(__FILE__); Serial.print("RUNNINGAVERAGE_LIB_VERSION: "); Serial.println(RUNNINGAVERAGE_LIB_VERSION); + Serial.println(); + delay(10); + // explicitly start clean myRA.clear(); + for (uint16_t i = 0; i < 30; i++) { myRA.addValue(i); diff --git a/examples/ra_performance/ra_performance.ino b/examples/ra_performance/ra_performance.ino index 53c4db7..8a4e5a6 100644 --- a/examples/ra_performance/ra_performance.ino +++ b/examples/ra_performance/ra_performance.ino @@ -25,7 +25,9 @@ void setup(void) Serial.println(RUNNINGAVERAGE_LIB_VERSION); Serial.println(); - myRA.clear(); // explicitly start clean + delay(10); + // explicitly start clean + myRA.clear(); for (int i = 0; i < 10; i++) { diff --git a/examples/ra_test/ra_test.ino b/examples/ra_test/ra_test.ino index c9465ef..1e74012 100644 --- a/examples/ra_test/ra_test.ino +++ b/examples/ra_test/ra_test.ino @@ -20,8 +20,11 @@ void setup(void) Serial.println(__FILE__); Serial.print("RUNNINGAVERAGE_LIB_VERSION: "); Serial.println(RUNNINGAVERAGE_LIB_VERSION); + Serial.println(); - myRA.clear(); // explicitly start clean + delay(10); + // explicitly start clean + myRA.clear(); for (int i = 0; i < 10; i++) { @@ -45,7 +48,7 @@ void loop(void) Serial.print(samples); Serial.print("\t Running Average: "); Serial.println(myRA.getAverage(), 3); - + if (samples == 300) { samples = 0; diff --git a/examples/ra_two_sensors/ra_two_sensors.ino b/examples/ra_two_sensors/ra_two_sensors.ino index 272bb25..249482b 100644 --- a/examples/ra_two_sensors/ra_two_sensors.ino +++ b/examples/ra_two_sensors/ra_two_sensors.ino @@ -1,7 +1,6 @@ // // FILE: ra_two_sensors.ino // AUTHOR: Rob Tillaart -// DATE: 2020-12-06 // PURPOSE: show working of runningAverage for two sensors // URL: https://github.com/RobTillaart/RunningAverage @@ -25,9 +24,10 @@ void setup(void) Serial.println(__FILE__); Serial.print("RUNNINGAVERAGE_LIB_VERSION: "); Serial.println(RUNNINGAVERAGE_LIB_VERSION); + Serial.println(); // explicitly start clean - RAT.clear(); + RAT.clear(); RAH.clear(); } diff --git a/examples/ra_two_step/ra_two_step.ino b/examples/ra_two_step/ra_two_step.ino index 19f9acc..0706173 100644 --- a/examples/ra_two_step/ra_two_step.ino +++ b/examples/ra_two_step/ra_two_step.ino @@ -22,6 +22,8 @@ void setup(void) Serial.println(__FILE__); Serial.print("RUNNINGAVERAGE_LIB_VERSION: "); Serial.println(RUNNINGAVERAGE_LIB_VERSION); + Serial.println(); + raHours.clear(); raDays.clear(); } diff --git a/library.json b/library.json index 2c03001..74f393a 100644 --- a/library.json +++ b/library.json @@ -15,7 +15,7 @@ "type": "git", "url": "https://github.com/RobTillaart/RunningAverage.git" }, - "version": "0.4.7", + "version": "0.4.8", "license": "MIT", "frameworks": "*", "platforms": "*", diff --git a/library.properties b/library.properties index 6683ffa..6f0b272 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=RunningAverage -version=0.4.7 +version=0.4.8 author=Rob Tillaart maintainer=Rob Tillaart sentence=The library stores the last N individual values in a circular buffer to calculate the running average.