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