37 lines
1,011 B
C
37 lines
1,011 B
C
|
#ifndef ATMBUTTON_H
|
||
|
#define ATMBUTTON_H
|
||
|
|
||
|
#include <Arduino.h>
|
||
|
|
||
|
class AtmButton {
|
||
|
private:
|
||
|
|
||
|
uint8_t pin, ledPin;
|
||
|
uint8_t ledState = LEDOFF;
|
||
|
volatile bool pressed = false;
|
||
|
volatile unsigned long last_pressed_ms = 0;
|
||
|
volatile unsigned long pressed_at_ms = 0;
|
||
|
volatile unsigned long pressed_after_ms = 0;
|
||
|
|
||
|
bool activeWaiting = false;
|
||
|
unsigned long startWaitTime = 0;
|
||
|
unsigned long lastWaitLedToggle = 0;
|
||
|
|
||
|
static void IRAM_ATTR buttonIsrHandler(void* arg); // Interrupt Service Routine (ISR)
|
||
|
|
||
|
public:
|
||
|
const uint8_t LEDON = HIGH;
|
||
|
const uint8_t LEDOFF = LOW;
|
||
|
const unsigned long DEBOUNCE_BUTTON_MS = 200; // wait that number of ms before counting the button pressed pulse -> debouncing
|
||
|
|
||
|
AtmButton(uint8_t, uint8_t );
|
||
|
void begin();
|
||
|
bool wasPressed();
|
||
|
void ledOn();
|
||
|
void ledOff();
|
||
|
void ledToggle();
|
||
|
bool iswaitingUntilPressed(unsigned long maxTimeToWaitMs, unsigned long blinkPeriodMs);
|
||
|
};
|
||
|
|
||
|
#endif
|