Chrismolloy:
I am having overflow errors in visual micro debugger in ms visual studio.I have 15 instances of RunningAverage sized from 24 to 60.
I am getting random ovf errors on calls to getAverage().
S = savg.getAverage() generates an ovf error at random times.
here is the code
/*
This code creates a schedule for events every second, minute & hour
*/
#include <Metro.h> //Include Metro library
// Create metro objects and set intervals to one second, minute & hour
Metro Second = Metro(1000); //one second
Metro Minute = Metro(2000); //one minute
Metro Hour = Metro(4000); //one hour
#include "RunningAverage.h"
//Create running average objects
RunningAverage Sensor1Seconds(60);
RunningAverage Sensor1Minutes(60);
RunningAverage Sensor1Hours(24);
RunningAverage Sensor2Seconds(60);
RunningAverage Sensor2Minutes(60);
RunningAverage Sensor2Hours(24);
RunningAverage Sensor3Seconds(60);
RunningAverage Sensor3Minutes(60);
RunningAverage Sensor3Hours(24);
RunningAverage Sensor4Seconds(60);
RunningAverage Sensor4Minutes(60);
RunningAverage Sensor4Hours(24);
RunningAverage Sensor5Seconds(60);
RunningAverage Sensor5Minutes(60);
RunningAverage Sensor5Hours(24);
//variables to track time elapsed
int seconds = 0;
int minutes = 0;
int hours = 0;
int led = 13;
void blink()
{
digitalWrite(led,1);
int m = millis();
while(millis() < m+500);
//for(int n=1;n<100000;n=++n);
digitalWrite(led,0);
}
void setup()
{
pinMode(led,OUTPUT);
blink();
Sensor1Seconds.clear();
Sensor1Minutes.clear();
Sensor1Hours.clear();
Sensor2Seconds.clear();
Sensor2Minutes.clear();
Sensor2Hours.clear();
Sensor3Seconds.clear();
Sensor3Minutes.clear();
Sensor3Hours.clear();
Sensor4Seconds.clear();
Sensor4Minutes.clear();
Sensor4Hours.clear();
Sensor5Seconds.clear();
Sensor5Minutes.clear();
Sensor5Hours.clear();
}
float s1=0;
float s2=0;
float s3=0;
float s4=0;
float s5=0;
float m1=0;
float m2=0;
float m3=0;
float m4=0;
float m5=0;
float h1=0;
float h2=0;
float h3=0;
float h4=0;
float h5=0;
float rn;
void SensorSecondUpdate() {
rn = random(0, 1000);
Sensor1Seconds.addValue(rn);
s1 = Sensor1Seconds.getAverage();
rn = random(0, 1000);
Sensor2Seconds.addValue(rn);
s2 = Sensor2Seconds.getAverage();
rn = random(0, 1000);
Sensor3Seconds.addValue(rn);
s3 = Sensor3Seconds.getAverage();
rn = random(0, 1000);
Sensor4Seconds.addValue(rn);
s4 = Sensor4Seconds.getAverage();
rn = random(0, 1000);
Sensor5Seconds.addValue(rn);
s5 = Sensor5Seconds.getAverage();
}
void SensorMinuteUpdate() {
float x = Sensor1Seconds.getAverage();
Sensor1Minutes.addValue(x);
m1 = Sensor1Minutes.getAverage();
Sensor1Seconds.clear();
x = Sensor2Seconds.getAverage();
Sensor2Minutes.addValue(x);
m2 = Sensor2Minutes.getAverage();
Sensor2Seconds.clear();
x=Sensor3Seconds.getAverage();
Sensor3Minutes.addValue(x);
m3 = Sensor3Minutes.getAverage();
Sensor3Seconds.clear();
x = Sensor4Seconds.getAverage();
Sensor4Minutes.addValue(x);
m4 = Sensor4Minutes.getAverage();
Sensor4Seconds.clear();
x=Sensor5Seconds.getAverage();
Sensor5Minutes.addValue(x);
m5 = Sensor5Minutes.getAverage();
Sensor5Seconds.clear();
}
void SensorHourUpdate() {
float x=Sensor1Minutes.getAverage();
Sensor1Hours.addValue(x);
h1 = Sensor1Hours.getAverage();
x=Sensor2Minutes.getAverage();
Sensor2Hours.addValue(x);
h2 = Sensor2Hours.getAverage();
x=Sensor3Minutes.getAverage();
Sensor3Hours.addValue(x);
h3 = Sensor3Hours.getAverage();
x=Sensor4Minutes.getAverage();
Sensor4Hours.addValue(x);
h4 = Sensor4Hours.getAverage();
x=Sensor5Minutes.getAverage();
Sensor5Hours.addValue(x);
h5 = Sensor5Hours.getAverage();
}
void loop()
{
if (Second.check() == 1) { // check if its been a second
seconds = ++seconds;
SensorSecondUpdate();
blink();
//put stuff here to do every second
}
if (Minute.check() == 1) { // check if its been a minute
minutes = ++minutes;
SensorMinuteUpdate();
//put stuff here to do every minute
}
if (Hour.check() == 1) { // check if its been an hour
hours = ++hours;
SensorHourUpdate();
//put stuff here to do every hour
}
}
moderatore: added code tags - # button above smileys