/* 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 - 10 kilohm 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 30 Aug 2011 by Tom Igoe This example code is in the public domain. http://www.arduino.cc/en/Tutorial/ButtonStateChange */ // this constant won't change: const int button1 = 7; // button to turn on the light const int button2 = 4; // button to turn off the light const int led1 = 13; // the pin that the LED is attached to int button1Curr = 0; // current state of button1 int button1Prev = 0; // previous state of button1 int button2Curr = 0; // current state of button2 int button2Prev = 0; // previous state of button2 void setup() { pinMode(button1, INPUT); pinMode(button2, INPUT); pinMode(led1, OUTPUT); // initialize serial communication for debugging // Serial.begin(9600); } void loop() { /* button1 */ /* if change of state from off to on, then turn on LED */ button1Curr = digitalRead(button1); // compare the buttonState to its previous state if (button1Curr == HIGH && button1Prev == 0) { // turn led on digitalWrite(led1, HIGH); } else { // no change } // Delay a little bit to avoid bouncing delay(50); // save the current state as the last state, for next time through the loop button1Prev = button1Curr; /* button2 */ /* if change of state from off to on, then turn off LED */ button2Curr = digitalRead(button2); // compare the buttonState to its previous state if (button2Curr == HIGH && button2Prev == 0) { // turn led OFF digitalWrite(led1, LOW); } else { // no change } // Delay a little bit to avoid bouncing delay(50); // save the current state as the last state, for next time through the loop button2Prev = button2Curr; }