Download this file
#include "PushButton.h"
int8_t PushButton::states[] = {0, 1, -1 ,0};
PushButton::PushButton(uint8_t pin_) {
pin = pin_;
pinMode(pin, INPUT);
digitalWrite(pin, HIGH);
}
uint8_t PushButton::getState(uint8_t debounce) {
if (millis() > debounce * 10 + lastMillis) {
lastMillis = millis();
return !digitalRead(pin);
}
return 0;
}
int8_t PushButton::getEdge() {
old_state <<= 1;
old_state |= !digitalRead(pin) & 0x01;
return PushButton::states[old_state & 0x03];
}
uint8_t PushButton::getPressed() {
return getEdge() == 1;
}
uint8_t PushButton::getReleased() {
return getEdge() == -1;
}
// vim:ft=arduino