-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPushButton.cpp
More file actions
40 lines (36 loc) · 958 Bytes
/
PushButton.cpp
File metadata and controls
40 lines (36 loc) · 958 Bytes
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
//
//
//
#include "PushButton.h"
/// <summary>
/// Initializes a new instance of the <see cref="PushButton"/> class.
/// </summary>
/// <param name="pinNumber">The pin number.</param>
/// <param name="debounceTimeInMiliseconds">The debounce time in miliseconds.</param>
PushButton::PushButton(byte pinNumber, byte debounceTimeInMiliseconds) : IButton(pinNumber, debounceTimeInMiliseconds)
{
}
/// <summary>
/// Finalizes an instance of the <see cref="PushButton"/> class.
/// </summary>
PushButton::~PushButton()
{
}
/// <summary>
/// Updates the state.
/// </summary>
void PushButton::UpdateState()
{
boolean readedState = digitalRead(pinNumber);
if (readedState != lastReadedState)
{
pushedTime = millis();
lastReadedState = readedState;
debounceState = Unstable;
}
else if (debounceState == Unstable && millis() - pushedTime >= debounceTime)
{
currentState = readedState == HIGH ? Pushed : Released;
debounceState = Debounced;
}
}