RBE1001Lib
button.cpp
Go to the documentation of this file.
1 #include <button.h>
2 
3 Button::Button(uint8_t pin, uint32_t db)
4 {
5  buttonPin = pin;
6  debouncePeriod = db;
7 }
8 
9 void Button::Init(bool usePullup)
10 {
11  if(usePullup) pinMode(buttonPin, INPUT_PULLUP);
12  else pinMode(buttonPin, INPUT);
13 
14  stabButtonPos = tempButtonPos = digitalRead(buttonPin);
15 }
16 
18 {
19  bool retVal = false;
20  uint8_t currButtonPos = digitalRead(buttonPin);
21 
22  if(tempButtonPos != currButtonPos) //there's been a transistion, so start/continue debouncing
23  {
25 
26  lastBounceTime = millis(); //start/restart the debouncing timer
27  tempButtonPos = currButtonPos; //keep track of the bouncing
28  }
29 
30  if(state == BUTTON_UNSTABLE)
31  {
32  if(millis() - lastBounceTime >= debouncePeriod) //timer has expired
33  {
35  }
36  }
37 
38  if(state == BUTTON_STABLE)
39  {
40  if(stabButtonPos != tempButtonPos) //we have a transision
41  {
42  if(tempButtonPos == activeState) retVal = true;
44  }
45  }
46 
47  return retVal;
48 }
bool CheckButtonPress(void)
Definition: button.cpp:17
uint32_t debouncePeriod
Definition: button.h:31
uint8_t stabButtonPos
Definition: button.h:27
void Init(bool usePullup=true)
Definition: button.cpp:9
BUTTON_STATE state
Definition: button.h:22
uint8_t tempButtonPos
Definition: button.h:28
uint8_t buttonPin
Definition: button.h:24
uint32_t lastBounceTime
Definition: button.h:30
int pin
Definition: ToneExample.ino:7
Button(uint8_t pin, uint32_t db=10)
Definition: button.cpp:3
uint8_t activeState
Definition: button.h:25