help with  PIR Sensor paralllax

I am working in a projcet that involves serial proxis
I did apost before of using a Photosensor, but realized that that method will not work under the room condition .
so after re-desingning the idea Need to use the Motion sensor.

I need help with serial.println.
the Pir sensor streams a print line . I need to print Line only once , when motion is detected, then wait 15 secs and if motion is detected again, reprint ln. printline will generate a Letter (a) and serial proxy will execute a action on the computer,.
I am using the generic pir code for arduino , any
help is very weellcome


//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 = 3;    //the digital pin connected to the PIR sensor's output
int ledPin = 13;

void setup(){
  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.println(" done");
    Serial.println("SENSOR ACTIVE");

void loop(){

     if(digitalRead(pirPin) == HIGH){
       digitalWrite(ledPin, HIGH);   //the led visualizes the sensors output pin state
         //makes sure we wait for a transition to LOW before any further output is made:
         lockLow = false;            
         Serial.print("motion detected at ");
         Serial.println(" sec"); 
         takeLowTime = true;

     if(digitalRead(pirPin) == LOW){       
       digitalWrite(ledPin, LOW);  //the led visualizes the sensors output pin state

        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");

any one..... thank you in advance arduino comunity :)

Ok Here is my clear question:

Have a parallax sensor motion ( pir sensor) when the sensor detects motion serial.println will print "a" Once only and waite 20 secs , so if sensor still detect motion will print line again .

I have use Seria.println ("a"); and delay (20);

how ever . if the motion detects motion after motion serial.println will print a stream of lines even after the motion has been stop.

any help is very welcome

I'm not sure where the problem is. The code you've posted appears to be working properly - or at lease close to what you've described.

When I run it, it does the calibration. And then prints that it detected motion at a number of seconds and stays that way until a quiet time elapses. Then it displays that motion has ended at a certain time.

You may need to look over your wiring. Maybe the sensor is not connected properly(?)

thank you. the sensor works. my question is I need to Println once every time that detects motion then waite 20 seconsds and if motions stillhapen the println will reprint a line. now reprints a buch of lines. I want to use the printline for serialproxy

This line is wrong:-

if(!lockLow && millis() - lowIn > pause)


if(!lockLow && ((millis() - lowIn) > pause))

Also you are doing a read then testing for high, then doing a read and testing for low. You should do a read to a variable then test the variable for high then test it for low.

Also I think you haven't got the logic right for the delay. try drawing it out as a flow diagram first before you implement it.