/
ArduinoTimer.h
51 lines (43 loc) · 1.25 KB
/
ArduinoTimer.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/* *****************************************************************************
* A wraper to simplify timed actions on the Arduino platform.
* Usage:
* // Create a class or global timer variable.
* ArduinoTimer MyTimer;
*
* // For timed action.
* if (MyTimer.TimePassed_Seconds(10))
* {
* Serial.println("Another 10 seconds has ellapsed");
* }
* ***************************************************************************** */
#pragma once
#include <Arduino.h>
class ArduinoTimer
{
uint32_t m_uStartTime;
public:
ArduinoTimer();
inline ArduinoTimer(bool bReset) __attribute__((always_inline))
{
if (bReset)
Reset();
}
inline void Reset() __attribute__((always_inline))
{
m_uStartTime = millis();
}
inline uint32_t EllapsedMilliseconds() const __attribute__((always_inline))
{
return millis() - m_uStartTime;
}
inline uint16_t EllapsedSeconds() const __attribute__((always_inline))
{
return (millis() - m_uStartTime) / 1000;
}
bool TimePassed_Milliseconds(uint32_t uPeriod, bool bAtuoReset = true);
bool TimePassed_Seconds(uint16_t uPeriod, bool bAtuoReset = true);
inline uint32_t StartTime() const __attribute__((always_inline))
{
return m_uStartTime;
}
};