feat: 全量同步 254 个常用的 Arduino 扩展库文件
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
// -----
|
||||
// ESP32touchButton.h - Library for detecting button clicks, doubleclicks and long
|
||||
// press pattern on a single button. This class is implemented for use with the
|
||||
// Arduino environment. Copyright (c) by Matthias Hertel,
|
||||
// http://www.mathertel.de This work is licensed under a BSD style license. See
|
||||
// http://www.mathertel.de/License.aspx More information on:
|
||||
// http://www.mathertel.de/Arduino
|
||||
// -----
|
||||
// 02.10.2010 created by Matthias Hertel
|
||||
// 21.04.2011 transformed into a library
|
||||
// 01.12.2011 include file changed to work with the Arduino 1.0 environment
|
||||
// 23.03.2014 Enhanced long press functionalities by adding longPressStart and
|
||||
// longPressStop callbacks
|
||||
// 21.09.2015 A simple way for debounce detection added.
|
||||
// 14.05.2017 Debouncing improvements.
|
||||
// 25.06.2018 Optional third parameter for deactivating pullup.
|
||||
// 26.09.2018 Anatoli Arkhipenko: Included solution to use library with other
|
||||
// sources of input.
|
||||
// 26.09.2018 Initialization moved into class declaration.
|
||||
// 26.09.2018 Jay M Ericsson: compiler warnings removed.
|
||||
// -----
|
||||
|
||||
#ifndef ESP32touchButton_h
|
||||
#define ESP32touchButton_h
|
||||
|
||||
#include "Arduino.h"
|
||||
|
||||
// ----- Callback function types -----
|
||||
|
||||
extern "C" {
|
||||
typedef void (*callbackFunction)(void);
|
||||
typedef void (*parameterizedCallbackFunction)(void*);
|
||||
}
|
||||
|
||||
|
||||
class ESP32touchButton
|
||||
{
|
||||
public:
|
||||
// ----- Constructor -----
|
||||
ESP32touchButton();
|
||||
|
||||
ESP32touchButton(int pin, int active, bool pullupActive = true);
|
||||
|
||||
// ----- Set runtime parameters -----
|
||||
|
||||
// set # millisec after safe click is assumed.
|
||||
void setDebounceTicks(int ticks);
|
||||
|
||||
// set # millisec after single click is assumed.
|
||||
void setClickTicks(int ticks);
|
||||
|
||||
// set # millisec after press is assumed.
|
||||
void setPressTicks(int ticks);
|
||||
|
||||
// attach functions that will be called when button was pressed in the
|
||||
// specified way.
|
||||
void attachClick(callbackFunction newFunction);
|
||||
void attachClick(parameterizedCallbackFunction newFunction, void* parameter);
|
||||
void attachDoubleClick(callbackFunction newFunction);
|
||||
void attachDoubleClick(parameterizedCallbackFunction newFunction, void* parameter);
|
||||
void attachPress(
|
||||
callbackFunction newFunction); // DEPRECATED, replaced by longPressStart,
|
||||
// longPressStop and duringLongPress
|
||||
void attachLongPressStart(callbackFunction newFunction);
|
||||
void attachLongPressStart(parameterizedCallbackFunction newFunction, void* parameter);
|
||||
void attachLongPressStop(callbackFunction newFunction);
|
||||
void attachLongPressStop(parameterizedCallbackFunction newFunction, void* parameter);
|
||||
void attachDuringLongPress(callbackFunction newFunction);
|
||||
void attachDuringLongPress(parameterizedCallbackFunction newFunction, void* parameter);
|
||||
|
||||
// ----- State machine functions -----
|
||||
|
||||
/**
|
||||
* @brief Call this function every some milliseconds for checking the input
|
||||
* level at the initialized digital pin.
|
||||
*/
|
||||
void tick(void);
|
||||
|
||||
/**
|
||||
* @brief Call this function every time the input level has changed.
|
||||
* Using this function no digital input pin is checked because the current
|
||||
* level is given by the parameter.
|
||||
*/
|
||||
void tick(bool level);
|
||||
|
||||
bool isLongPressed();
|
||||
int getPressedTicks();
|
||||
void reset(void);
|
||||
|
||||
private:
|
||||
int _pin; // hardware pin number.
|
||||
unsigned int _debounceTicks = 50; // number of ticks for debounce times.
|
||||
unsigned int _clickTicks = 600; // number of ticks that have to pass by
|
||||
// before a click is detected.
|
||||
unsigned int _pressTicks = 1000; // number of ticks that have to pass by
|
||||
// before a long button press is detected
|
||||
|
||||
int _buttonPressed;
|
||||
|
||||
bool _isLongPressed = false;
|
||||
|
||||
// These variables will hold functions acting as event source.
|
||||
callbackFunction _clickFunc = NULL;
|
||||
parameterizedCallbackFunction _paramClickFunc = NULL;
|
||||
void* _clickFuncParam = NULL;
|
||||
|
||||
callbackFunction _doubleClickFunc = NULL;
|
||||
parameterizedCallbackFunction _paramDoubleClickFunc = NULL;
|
||||
void* _doubleClickFuncParam = NULL;
|
||||
|
||||
callbackFunction _pressFunc = NULL;
|
||||
|
||||
callbackFunction _longPressStartFunc = NULL;
|
||||
parameterizedCallbackFunction _paramLongPressStartFunc = NULL;
|
||||
void* _longPressStartFuncParam = NULL;
|
||||
|
||||
callbackFunction _longPressStopFunc = NULL;
|
||||
parameterizedCallbackFunction _paramLongPressStopFunc = NULL;
|
||||
void* _longPressStopFuncParam;
|
||||
|
||||
callbackFunction _duringLongPressFunc = NULL;
|
||||
parameterizedCallbackFunction _paramDuringLongPressFunc = NULL;
|
||||
void* _duringLongPressFuncParam = NULL;
|
||||
|
||||
// These variables that hold information across the upcoming tick calls.
|
||||
// They are initialized once on program start and are updated every time the
|
||||
// tick function is called.
|
||||
int _state = 0;
|
||||
unsigned long _startTime; // will be set in state 1
|
||||
unsigned long _stopTime; // will be set in state 2
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user