Professional Documents
Culture Documents
Living
Outside
Play
Technology
Workshop
Table of Contents
Arduino Basics: PIR Sensors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Step 1: Supplies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Step 2: Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Step 3: Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
http://www.instructables.com/id/Arduino-Basics-PIR-Sensor/
Author:frenzy
I'm the QA engineer here at instructables. I make cool projects in between testing instructables.com to make sure it works awesomely. Give me your bugs!
Step 1: Supplies
For this instructable you will need the following:
1 arduino (with protoshield to make life easy)
1 LED of any color
1 PIR sensor from Parallax (you can find these at most radio shacks)
Solid wire to hook it up
Step 2: Setup
The wiring is pretty simple, the PIR sensor has screen printed: + - out
Hook the + to 5v, - to ground and out to pin 7
The take the LED and put power to pin 8 and ground to ground.
If its confusing, take a look at the pictures!
http://www.instructables.com/id/Arduino-Basics-PIR-Sensor/
Step 3: Code
This code is lifted from the arduino.cc site here, the code I used is also attached.
/*
* //////////////////////////////////////////////////
* //making sense of the Parallax PIR sensor's output
* //////////////////////////////////////////////////
*
* Switches a LED according to the state of the sensors output pin.
* Determines the beginning and end of continuous motion sequences.
*
* @author: Kristian Gohlke / krigoo (_) gmail (_) com / http://krx.at
* @date:
3. September 2006
*
* kr1 (cleft) 2006
* released under a creative commons "Attribution-NonCommercial-ShareAlike 2.0" license
* http://creativecommons.org/licenses/by-nc-sa/2.0/de/
*
*
* The Parallax PIR Sensor is an easy to use digital infrared motion sensor module.
* (http://www.parallax.com/detail.asp?product_id=555-28027)
*
* The sensor's output pin goes to HIGH if motion is present.
* However, even if motion is present it goes to LOW from time to time,
* which might give the impression no motion is present.
* This program deals with this issue by ignoring LOW-phases shorter than a given time,
* assuming continuous motion is present during these phases.
*
*/
/////////////////////////////
//VARS
//the time we give the sensor to calibrate (10-60 secs according to the datasheet)
int calibrationTime = 30;
//the time when the sensor outputs a low impulse
long unsigned int lowIn;
//the amount of milliseconds the sensor has to be low
//before we assume all motion has stopped
long unsigned int pause = 5000;
boolean lockLow = true;
boolean takeLowTime;
int pirPin = 7;
int ledPin = 8;
/////////////////////////////
//SETUP
void setup(){
Serial.begin(9600);
pinMode(pirPin, INPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(pirPin, LOW);
//give the sensor some time to calibrate
Serial.print("calibrating sensor ");
for(int i = 0; i < calibrationTime; i++){
Serial.print(".");
http://www.instructables.com/id/Arduino-Basics-PIR-Sensor/
delay(1000);
}
Serial.println(" done");
Serial.println("SENSOR ACTIVE");
delay(50);
}
////////////////////////////
//LOOP
void loop(){
if(digitalRead(pirPin) == HIGH){
digitalWrite(ledPin, HIGH);
//the led visualizes the sensors output pin state
if(lockLow){
//makes sure we wait for a transition to LOW before any further output is made:
lockLow = false;
Serial.println("---");
Serial.print("motion detected at ");
Serial.print(millis()/1000);
Serial.println(" sec");
delay(50);
}
takeLowTime = true;
}
if(digitalRead(pirPin) == LOW){
digitalWrite(ledPin, LOW); //the led visualizes the sensors output pin state
if(takeLowTime){
lowIn = millis();
//save the time of the transition from high to LOW
takeLowTime = false;
//make sure this is only done at the start of a LOW phase
}
//if the sensor is low for more than the given pause,
//we assume that no more motion is going to happen
if(!lockLow & millis() - lowIn > pause){
//makes sure this block of code is only executed again after
//a new motion sequence has been detected
lockLow = true;
Serial.print("motion ended at ");
//output
Serial.print((millis() - pause)/1000);
Serial.println(" sec");
delay(50);
}
}
}
You can see from the code, the sensor first calibrates itself and then watches for movement. When it detects movement, the blue light goes on. You can watch the serial
monitor to see how long the movement lasts.
http://www.instructables.com/id/Arduino-Basics-PIR-Sensor/
File Downloads
pir.pde (3 KB)
[NOTE: When saving, if you see .tmp as the file ext, rename it to 'pir.pde']
http://www.instructables.com/id/Arduino-Basics-PIR-Sensor/
Related Instructables
PIR Motion
Sensor Tutorial
by adafruit
Arduino
Controlled
Motion Sensor
by LemonSlice
PIR Alarm
Arduino Motion
Sensor (with
Encasing) by
chuck4747
Keychain
camera with PIR
motion detector
controlled by
Arduino chip
(Photos) by
janisalnis
Basics of the
Arduino
(Duemilanove)
by vishalapr
Comments
20 comments Add Comment
USmarineforces says:
diy_bloke says:
darrenervine says:
Computothought says:
bertus52x11 says:
Did you get a new identity recently, or is this your standard Arduino outfit?
Anyway, always good to read the basics...
No you got it wrong you see he was trying to make arduinos less nerdy but.........it had the opposite affect :I
frenzy says:
frenzy says:
http://www.instructables.com/id/Arduino-Basics-PIR-Sensor/
bertus52x11 says:
account3r2 says:
if you are using fritzing, can you send me the download for the pir sensor?
frenzy says:
lynne123 says:
account3r2 says:
mhkabir says:
Yes he is.
maewert says:
Do you recommend we put a 220 ohm resistor between pin 8 and the LED to limit the current?
Best Wishes
frenzy says:
rtty21 says:
Nice new glasses! awesome tutorial too!
http://www.instructables.com/id/Arduino-Basics-PIR-Sensor/