New Debouncer class split from the hardware layer

This commit is contained in:
Thomas O Fredericks
2020-08-06 13:34:56 -04:00
parent 2b6be81dc1
commit 1a6552ffe5
2 changed files with 183 additions and 130 deletions
+45 -28
View File
@@ -3,40 +3,33 @@
#include "Bounce2.h"
//////////////
// DEBOUNCE //
//////////////
Bounce::Bounce()
: previous_millis(0)
Debouncer::Debouncer():previous_millis(0)
, interval_millis(10)
, state(0)
, pin(0)
{}
, state(0) {}
void Bounce::attach(int pin) {
this->pin = pin;
state = 0;
void Debouncer::interval(uint16_t interval_millis)
{
this->interval_millis = interval_millis;
}
void Debouncer::begin() {
state = 0;
if (readCurrentState()) {
setStateFlag(DEBOUNCED_STATE | UNSTABLE_STATE);
}
#ifdef BOUNCE_LOCK_OUT
#ifdef BOUNCE_LOCK_OUT
previous_millis = 0;
#else
previous_millis = millis();
#endif
}
void Bounce::attach(int pin, int mode){
setPinMode(pin, mode);
this->attach(pin);
}
void Bounce::interval(uint16_t interval_millis)
{
this->interval_millis = interval_millis;
}
bool Bounce::update()
bool Debouncer::update()
{
unsetStateFlag(CHANGED_STATE);
@@ -107,32 +100,56 @@ bool Bounce::update()
}
// WIP HELD
unsigned long Bounce::previousDuration() {
unsigned long Debouncer::previousDuration() {
return durationOfPreviousState;
}
unsigned long Bounce::duration() {
unsigned long Debouncer::duration() {
return (millis() - stateChangeLastTime);
}
inline void Bounce::changeState() {
inline void Debouncer::changeState() {
toggleStateFlag(DEBOUNCED_STATE);
setStateFlag(CHANGED_STATE) ;
durationOfPreviousState = millis() - stateChangeLastTime;
stateChangeLastTime = millis();
}
bool Bounce::read()
bool Debouncer::read()
{
return getStateFlag(DEBOUNCED_STATE);
}
bool Bounce::rose()
bool Debouncer::rose()
{
return getStateFlag(DEBOUNCED_STATE) && getStateFlag(CHANGED_STATE);
}
bool Bounce::fell()
bool Debouncer::fell()
{
return !getStateFlag(DEBOUNCED_STATE) && getStateFlag(CHANGED_STATE);
}
////////////
// BOUNCE //
////////////
Bounce::Bounce()
: pin(0)
{}
void Bounce::attach(int pin) {
this->pin = pin;
// SET INITIAL STATE
begin();
}
void Bounce::attach(int pin, int mode){
setPinMode(pin, mode);
this->attach(pin);
}