31 lines
No EOL
706 B
C++
31 lines
No EOL
706 B
C++
#include "Arduino.h"
|
|
#include "ButtonDebounce.h"
|
|
|
|
ButtonDebounce::ButtonDebounce(int pin, unsigned long delay){
|
|
pinMode(pin, INPUT_PULLUP);
|
|
_pin = pin;
|
|
_delay = delay;
|
|
_lastDebounceTime = 0;
|
|
_lastStateBtn = HIGH;
|
|
}
|
|
|
|
bool ButtonDebounce::isTimeToUpdate(){
|
|
return (millis() - _lastDebounceTime) > _delay;
|
|
}
|
|
|
|
void ButtonDebounce::update(){
|
|
if(!isTimeToUpdate()) return;
|
|
_lastDebounceTime = millis();
|
|
int btnState = digitalRead(_pin);
|
|
if(btnState == _lastStateBtn) return;
|
|
_lastStateBtn = btnState;
|
|
if(this->callback) this->callback(_lastStateBtn);
|
|
}
|
|
|
|
int ButtonDebounce::state(){
|
|
return _lastStateBtn;
|
|
}
|
|
|
|
void ButtonDebounce::setCallback(BTN_CALLBACK){
|
|
this->callback = callback;
|
|
} |