A replacement for InterruptIn that debounces the interrupt.
Dependents: D7A_Demo-Get-started CVtoOSCConverter EE3501keypad D7A_Localisation ... more
Fork of DebouncedInterrupt by
Example code:
#include "DebouncedInterrupt.h" DebouncedInterrupt up_button(USER_BUTTON); void onUp() { // Do Something } int main() { // Will immediatly call function and ignore other interrupts until timeout up_button.attach(&onUp, IRQ_FALL, 1000, true); // Will call function only if button has been held for the specified time //up_button.attach(&onUp, IRQ_FALL, 500, false); while(1) {} }
Diff: DebounceInterrupts.cpp
- Revision:
- 0:ca5a0fee9f52
- Child:
- 3:e4b7033508d1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DebounceInterrupts.cpp Tue Feb 18 01:05:10 2014 +0000 @@ -0,0 +1,27 @@ +#include "DebounceInterrupts.h" + +Timeout timeout; + +DebounceInterrupts::DebounceInterrupts(void (*fptr)(void), + InterruptIn *interruptIn, + const bool& rise, + const unsigned int& debounce_ms) +{ + fCallback = fptr; + if (rise) { + interruptIn->rise(this, &DebounceInterrupts::onInterrupt); + } else { + interruptIn->fall(this, &DebounceInterrupts::onInterrupt); + } + fDebounce_us = 1000*debounce_ms; +} + +DebounceInterrupts::~DebounceInterrupts() +{ +} + +void DebounceInterrupts::onInterrupt() +{ + timeout.detach(); + timeout.attach_us(fCallback,fDebounce_us); +} \ No newline at end of file