I posed the following problem to my senior design class: create an arduino sketch that toggles an LED with a button push ( similar to turning on/off a TV with one button). The students quickly realized that they had to include a deboucing algorithm otherwise the boucing would result in a random on/off state. Here is my solution that is an extension of Ladyada's "better debouncer" http://learn.adafruit.com/tilt-sensor/using-a-tilt-sensor.
/* Better Debouncer Toggle * * Helmut Strey 9/21/2012 * * this sketch senses debouced edges (high-low) (low-high) and toggles at (high-low) * * This debouncing toggle circuit is modified from Ladyada's better debounceer that can be found below * http://learn.adafruit.com/tilt-sensor/using-a-tilt-sensor * */ 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 int switchprevious = LOW; // 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 void