Did not seem to be working for me when I tried the example on the Arduino Examples page, tweeked around with it a little and got some thing like this:
/*
State change detection (edge detection)
Often, you don't need to know the state of a digital input all the time,
but you just need to know when the input changes from one state to another.
For example, you want to know when a button goes from OFF to ON. This is called
state change detection, or edge detection.
This example shows how to detect when a button or button changes from off to on
and on to off.
The circuit:
- pushbutton attached to pin 2 from +5V
- 10K resistor attached to pin 2 from ground
- LED attached from pin 13 to ground (or use the built-in LED on
most Arduino boards)
created 27 Sep 2005
modified 17 Jun 2009
by Tom Igoe
Edited 04 August, 2009
By Blibb
*/
// this constant won't change:
const int buttonPin = 2; // the pin that the pushbutton is attached to
const int ledPin = 13; // the pin that the LED is attached to
// Variables will change:
int buttonPushCounter = 0; // counter for the number of button presses
int buttonState = 0; // current state of the button
int lastButtonState = 0; // previous state of the button
void setup() {
// initialize the button pin as a input:
pinMode(buttonPin, INPUT);
// initialize serial communication:
Serial.begin(9600);
}
void loop() {
// read the pushbutton input pin:
buttonState = digitalRead(buttonPin);
if(lastButtonState != buttonState){
if(buttonState == LOW){
delay(100);
Serial.println("Button is OFF");
//print button is off if button is not pushed and a LOW is returned
}
else{
delay(500);
Serial.println("Button was turned ON");
buttonPushCounter++;
delay(1000);
Serial.print("Times button was pushed ");
Serial.print(buttonPushCounter);
Serial.println(" times");
}
}
lastButtonState = buttonState;
if(buttonPushCounter%5 == 0 && buttonPushCounter != 0){
digitalWrite(ledPin, HIGH);
}else{
digitalWrite(ledPin, LOW);
}
}