Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define DEBOUNCE 10
- #define COOLOFF 10
- #define PRESS_LONG 1000
- #define BUTTON_LEFT 2
- #define BUTTON_RIGHT 3
- #define LED_OUTPUT 4
- volatile unsigned long buttonLeftPressed = 0;
- volatile unsigned long buttonLeftReleased = 0;
- int output = 0;
- void buttonLeftPress() {
- unsigned long t = millis();
- if(buttonLeftPressed > 0
- && t - buttonLeftPressed <= DEBOUNCE) {
- return;
- }
- if(buttonLeftReleased > 0
- && t - buttonLeftReleased <= COOLOFF) {
- return;
- }
- buttonLeftPressed = t;
- }
- void buttonLeftRelease() {
- unsigned long t = millis();
- if(buttonLeftReleased > 0
- && t - buttonLeftReleased <= DEBOUNCE) {
- return;
- }
- if(buttonLeftPressed > 0
- && t - buttonLeftPressed <= COOLOFF) {
- return;
- }
- buttonLeftReleased = t;
- }
- void checkButtons() {
- if(buttonLeftReleased > 0) {
- unsigned long duration = buttonLeftReleased - buttonLeftPressed;
- if(duration >= PRESS_LONG) {
- output += 20;
- }
- else {
- output = 2;
- }
- buttonLeftPressed = 0;
- buttonLeftReleased = 0;
- }
- }
- void setup() {
- Serial.begin(9600);
- pinMode(BUTTON_LEFT, INPUT);
- attachInterrupt(digitalPinToInterrupt(BUTTON_LEFT), buttonLeftPress, FALLING);
- attachInterrupt(digitalPinToInterrupt(BUTTON_LEFT), buttonLeftRelease, RISING);
- }
- void loop() {
- checkButtons();
- while(output > 0) {
- Serial.println(output, DEC);
- delay(100);
- output--;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement