Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

A different twist on switch debounce

Status
Not open for further replies.

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..
 
Status
Not open for further replies.

New Articles From Microcontroller Tips

Back
Top