Mutila: Mouse's Utilities for Arduino
Oft-used utilities: debouncing buttons, averaging samples, and so on.
DebouncedButton.cpp
1 #include <Arduino.h>
2 #include "DebouncedButton.h"
3 #include "MutilaDebug.h"
4 #include "Millis.h"
5 
6 DebouncedButton::DebouncedButton(uint8_t pin, bool pullup) :
7  DigitalInputButton(pin, pullup)
8 {
9 }
10 
11 void DebouncedButton::begin(uint8_t threshold, uint8_t delay)
12 {
13  AbstractDebouncedButton::begin(threshold, delay);
15 }
16 
18 {
19  if (DoEvery(_delay, _lastUpdate)) {
20  if (DigitalInputButton::on() != _state) {
21  _counter++;
22  if (_counter > _threshold) {
23  setState(!_state);
24  }
25  } else if (_counter > 0) {
26  _counter = 0;
27  }
28  }
29 }
30 
32 {
33  return _state;
34 }
35 
DebouncedButton(uint8_t pin, bool pullup=true)
virtual void begin()