/* DeBounceDemo.ino Paul MacDougal May 2015 This work is licensed under the Creative Commons Attribution 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. */ #include "DeBounce.h" #define IDLE_TIME 3000 const uint8_t LED_PIN = 13; const uint8_t SCOPE2_PIN = 9; const uint8_t SCOPE_PIN = 8; const uint8_t SW_PIN = 2; DeBounce sw1; void setup() { Serial.begin(9600); //while (!Serial); // do this for Leonardo Serial.println(F("Initialized DeBounceDemo v1.0")); pinMode(LED_PIN, OUTPUT); pinMode(SCOPE_PIN, OUTPUT); pinMode(SCOPE2_PIN, OUTPUT); digitalWrite(SCOPE_PIN, LOW); digitalWrite(SCOPE2_PIN, LOW); digitalWrite(LED_PIN, LOW); if (sw1.init(SW_PIN, LOW, IDLE_TIME)) { while(1) { digitalWrite(LED_PIN, HIGH); delay(200); digitalWrite(LED_PIN, LOW); delay(200); } } // blink 4 times for (uint8_t i=0; i<4; i++) { digitalWrite(LED_PIN, HIGH); delay(250); digitalWrite(LED_PIN, LOW); delay(250); } } void handle_sw1() { switch (sw1.handleInput()) { case DeBounce_UP: break; case DeBounce_DOWN: break; case DeBounce_FIRST_RISING: digitalWrite(SCOPE2_PIN, HIGH); digitalWrite(SCOPE_PIN, HIGH); break; case DeBounce_RISING: digitalWrite(SCOPE_PIN, HIGH); break; case DeBounce_FALLING: digitalWrite(SCOPE_PIN, LOW); break; case DeBounce_PRESS: digitalWrite(LED_PIN, HIGH); digitalWrite(LED_PIN, LOW); digitalWrite(SCOPE2_PIN, LOW); Serial.print("Switch was down for "); Serial.print(sw1.getDuration()); Serial.println(" microseconds"); break; case DeBounce_THIS_SHOULD_NEVER_HAPPEN: default: digitalWrite(LED_PIN, HIGH); break; } } void loop() { handle_sw1(); }