I have just started playing about with a PIR sensor, however, all I am getting printed out on the serial monitor is 'motion' even when there is not. This is my first time playing with one of these, and I have tried to keep the code as simple as possible (for my own benefit too) but something has gone wrong. Maybe someone can spot what I am sure is a silly mistale on my part.
int val = 0;
int inputPin = 2;
int pirState = LOW;
void setup()
{
Serial.begin(9600);
pinMode(inputPin, INPUT);
}
void loop()
{
val = digitalRead(inputPin);
if (val == HIGH)
{
Serial.println("Motion");
delay (5000);
}
else if (val == LOW)
{
Serial.println("No Motion Detected");
delay(5000);
}
}
KE7GKP:
Exactly what is the nature of the output from your PIR sensor? Is it open-collector? Is it active high or active low? We have no clue without some identification of the sensor.
It is the Parallax PIR Sensor (555-28027), and the data sheet says it is active high. Thats why my logic was if a HIGH signal was received on the digital input, then that would signify motion, but it just doesn't seem to be working out that way.
As for the pull-down resistor, the documentation doesn't say it is needed, but I will give it a go!