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