#ifndef TouchInput_cpp #define TouchInput_cpp #include #include #define TOUCH_THRESHOLD 20 class TouchInput { const unsigned int _debounceDelay = 50; int _pin; std::function _callback; unsigned long _touchStart; bool _currentTouchValue, _prevTouchValue; public: TouchInput(int pin, std::function 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