vancontrolsystems/lib/TouchInput/TouchInput.cpp

39 lines
786 B
C++

#ifndef TouchInput_cpp
#define TouchInput_cpp
#include <Arduino.h>
#include <functional>
class TouchInput {
const unsigned int _debounceDelay = 50;
int _pin, _touchThreshold;
std::function<void()> _callback;
unsigned long _touchStart;
bool _currentTouchValue, _prevTouchValue;
public:
TouchInput(int pin, int touchThreshold, std::function<void()> callback){
_pin = pin;
_touchThreshold = touchThreshold;
_callback = callback;
}
void loop(){
bool touching = touchRead(_pin) <= _touchThreshold;
if (_prevTouchValue != touching) {
_touchStart = millis();
}
if (millis() - _touchStart >= _debounceDelay && touching != _currentTouchValue){
_currentTouchValue = touching;
if (touching)
_callback();
}
_prevTouchValue = touching;
}
};
#endif