/* 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 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 PIRPin = 2; // the pin that the pushbutton is attached to const int ledPin = 13; // the pin that the LED is attached to // Variables will change: bool PIRoutput = false; // counter for the number of button presses int PIRstate = 0; // current state of the button int LastPIRstate = 0; // previous state of the button void setup() { // initialize the pin 2 as a input: pinMode(PIRPin, INPUT); // initialize the LED as an output: pinMode(ledPin, OUTPUT); } void loop() { // read the input pin: PIRstate = digitalRead(PIRPin); // compare the buttonState to its previous state if (PIRstate != LastPIRstate) { // if the state has changed, increment the counter if (PIRstate == HIGH) { // if the current state is HIGH then the button // wend from off to on: PIRoutput = true; } else { // if the current state is LOW then the button // wend from on to off: // Serial.println("off"); PIRoutput = false; } // Delay a little bit to avoid bouncing delay(50); } // save the current state as the last state, //for next time through the loop LastPIRstate = PIRstate; // turns on the LED every time PIR sensor detects motion if (PIRoutput == true) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } }