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