A different twist on switch debounce

MrDEB

Well-Known Member
If I am interpreting this right then the DELAYMS(xxx) increases. Note I am not familiar with this code, assume its C??
Just browsing for tilt switches and found this.
Code:
    /* Better Debouncer
    *
    * This debouncing circuit is more rugged, and will work with tilt switches!
    *
    * http://www.ladyada.net/learn/sensor/tilt.html
    */
    int inPin = 2; // the number of the input pin
    int outPin = 13; // the number of the output pin
    int LEDstate = HIGH; // the current state of the output pin
    int reading; // the current reading from the input pin
    int previous = LOW; // the previous reading from the input pin
    // the follow variables are long's because the time, measured in miliseconds,
    // will quickly become a bigger number than can be stored in an int.
    long time = 0; // the last time the output pin was toggled
    long debounce = 50; // the debounce time, increase if the output flickers
    void setup()
    {
    pinMode(inPin, INPUT);
    digitalWrite(inPin, HIGH); // turn on the built in pull-up resistor
    pinMode(outPin, OUTPUT);
    }
    void loop()
    {
    int switchstate;
    reading = digitalRead(inPin);
    // If the switch changed, due to bounce or pressing...
    if (reading != previous) {
    // reset the debouncing timer
    time = millis();
    }
    if ((millis() - time) > debounce) {
    // whatever the switch is at, its been there for a long time
    // so lets settle on it!
    switchstate = reading;
    // Now invert the output on the pin13 LED
    if (switchstate == HIGH)
    LEDstate = LOW;
    else
    LEDstate = HIGH;
    }
    digitalWrite(outPin, LEDstate);
    // Save the last reading so we keep a running tally
    previous = reading;
    }
 
Its a snippet from an arduino sketch... Even 50mS for me is too short... But as he uses this for tilt switches I'm sure its good..

Normal debounce is 20 - 30mS.... With my keypad I use a beeper 100mS+ to acknowledge the keypress.... Works fine..
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…