PIR sensor reads HIGH even with no motion

The PIR sensor stayed as HIGH as soon as I uploaded the code into the arduino board. May I ask is there something wrong with my code?

The circuit diagram looks like this:

Here is the code:

int LED = 13;             // the pin that the LED is atteched to
int PIR = 2;              // the pin that the sensor is atteched to

void setup() {
  pinMode(LED, OUTPUT);   // initalize LED as an output
  pinMode(PIR, INPUT);    // initialize sensor as an input
  Serial.begin(9600);     // initialize serial

void loop(){
  if (digitalRead(PIR == HIGH)) { // check if the sensor is HIGH
    digitalWrite(LED, HIGH);      // turn LED ON 
    Serial.println("Motion detected!"); 
    delay(100);                   // delay 100 milliseconds 
  else {
    digitalWrite(LED, LOW);       // turn LED OFF
    Serial.println("Motion stopped!");
    delay(100);                   // delay 100 milliseconds

Check the PIR sensor for adjustment potentiometers for sensitivity and time on.
Also check the ground connection to the PIR which does not appear clearly on your image.
Post a link to a product page describing your sensor.

The connection to the sensor looks incorrect for HC-SR501, but who knows which one you are using

ground does not seem connected to the breadboard rail.. only to the LED..


Hi, @gwynethchiew

Can you post a link to the PIR please?
Is its output open collector?
If so then change.

pinMode(PIR, INPUT);    // initialize sensor as an input


pinMode(PIR, INPUT_PULLUP);    // initialize sensor as an input

It will turn on the internal pull up resistor in the UNO so a circuit exist for collector current.

Tom.... :smiley: :+1: :coffee: :australia:

thank you so much, it worked

Thanks to everyone for helping me, i have found the solution :+1:

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.