unsigned long CurrentTime = millis();
unsigned long ElapsedTime = CurrentTime - StartTime;
That will give you the elapsed time in milliseconds, up to about 40 days. If you need more precise measurement you can use 'micros()' instead of ''millis()' to get microseconds, up to a couple of hours, I think.
The Arduino clock isn't very accurate so your timing may be off by minutes a day.
Hello cheers for posting this!
I am using this code, but when I printout the elapsedTime sometimes I get the number which is not "useful" e.g.
Any idea what this is, and how to avoid this, if I want to use the elapsedTime in further code. For example, I would like to make a decision with regard to ElapsedTime, namely, if it is above certain time, below, etc.
It just calculates and displays the ElapsedTime in milliseconds.
Up to you to convert/print that in a human readable time format.
Look at this thread how I did that for a laptime sketch.
If you want to make a decision, e.g for 10 minutes,
10 minutes = 10 * 60 * 1000 = 600000 milliseconds.
Then use an if/else statement to compare that to the ElapsedTime you got.
Leo..
Any idea what this is, and how to avoid this, if I want to use the elapsedTime in further code.
Sure, I have an idea what it is.
You did the subtraction the wrong way around. What you did was StartTime minus CurrentTime. What you should have done would have been CurrentTime minus StartTime.
Constantin:
FWIW, once you get ready to finalize the code, try to compress all the math calcs in this example into a constant float or long up front. The reason being, there is no benefit to recalculating "2.0pi 3600 * 1000" over and over, it's 22619467.11... Ideally, Define R in that function as well and you may not even need to use a float.
Less calculations for Arduino to do = better responsiveness by Arduino.
The compiler does constant folding for you, its not the 1970's any more!!