2014-11-29 17:04:33 +00:00
|
|
|
class pushbutton : public CallBackInterface
|
|
|
|
{
|
|
|
|
public:
|
2015-02-22 04:47:58 +00:00
|
|
|
int n_clicks;
|
2014-11-29 17:04:33 +00:00
|
|
|
uint8_t pin;
|
|
|
|
unsigned int interval;
|
|
|
|
unsigned long last;
|
|
|
|
|
|
|
|
pushbutton (uint8_t _pin, unsigned int _interval): pin(_pin) , interval(_interval) {
|
|
|
|
dir = 0;
|
|
|
|
n_clicks = 0;
|
|
|
|
last = 0;
|
|
|
|
init();
|
|
|
|
};
|
|
|
|
void cbmethod() {
|
|
|
|
last = millis();
|
|
|
|
};
|
|
|
|
|
|
|
|
void update() {
|
|
|
|
if (last != 0 && (millis() - last) > interval) {
|
|
|
|
n_clicks += dir;
|
|
|
|
last = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void setDir(int d) {
|
|
|
|
dir = d;
|
|
|
|
}
|
|
|
|
|
|
|
|
private:
|
|
|
|
int dir;
|
|
|
|
|
|
|
|
void init () {
|
|
|
|
pinMode(pin, INPUT);
|
|
|
|
digitalWrite(pin, HIGH);
|
2015-02-22 04:47:58 +00:00
|
|
|
PCintPort::attachInterrupt(pin, this, CHANGE);
|
2014-11-29 17:04:33 +00:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|