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