Yet another Button Library this time for ESP32 Arduino IDE with GPIO Interrupt and Timer Interrupt for debounce
This library is using the interrupt functionality of ESP32s GPIOs.
The debounce functionality is using the ESP32s HardwareTimer 2 , so there is no stupid polling or millis() timekeeping.
Have a look at the example file.
The Callback functionality is not a must use! The nice part of it is, you can use delay() in it how much you like because it's not running in the actual ISR.
The only Catch is, that you have to call the run() function in order to update the Callbacks.
Good thing though: the run() functions return true if the button was pressed and false if not.
//include the library
#include "myButton.h"
//define some Pins if you like
int FirstPin = 32;
//Button Definitions, no Arguments needed.
myButton FirstButton;
//callback function
void doSth(void* arg, myButton* Button){
Serial.printf("This is Pin %d",Button->_PinNo);
}
// in setup() function:
void setup() {
//Begin Functions
//Sytax: myButton::begin(int Pin, int PinMode, uint64_t DebounceTime [default = 0.5s])
FirstButton.begin(FirstPin, INPUT_PULLUP);
//attatch Callback function
FirstButton.onButtonPress(doSth);
Serial.begin(115200);
}
// in loop function
void loop() {
//Run() functions for every Button needed, so you can do as much delay() in the above callback functions as you like ;)
FirstButton.run();
// the run() functions return true, if the button was pressed and false, if not...
if(FirstButton.run()) Serial.println("To use Callbacks , or not to use Callbacks");
}