39 lines
786 B
C++
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
|