Подключение датчика движения HC-SR501 к Arduino

Датчик движения (PIR)

HC-SR501 к Arduino — питание 5 В, земля и OUT на цифровой вывод. Выход читается через digitalRead(); для реакции без опроса подойдёт вывод с прерыванием (D2 или D3 на Uno).

Схема подключения датчика движения HC-SR501 к Arduino

HC-SR501Arduino Uno
OUTD2
VCC5V
GNDGND

Схема из примера «Arduino Uno: датчик движения HC-SR501».

Arduino Uno: датчик движения HC-SR501

Открыть пример целиком

Выводы HC-SR501

ВыводНазначение
OUTцифровой выход: высокий уровень при движении
VCCпитание модуля, 5 В
GNDобщий провод

Код для Arduino

// Свет по движению на HC-SR501.
//
// Датчик питается от 5 В и отвечает цифровым уровнем: движение — HIGH,
// тишина — LOW. Нажатие на линзу в симуляторе переключает одно в другое.

const int PIR = 2;
const int LED = 8;
const unsigned long HOLD_MS = 5000;   // держать свет после последнего движения

unsigned long lastMotion = 0;
bool lit = false;

void setup() {
  Serial.begin(9600);
  pinMode(PIR, INPUT);
  pinMode(LED, OUTPUT);
}

void loop() {
  if (digitalRead(PIR) == HIGH) {
    lastMotion = millis();
    if (!lit) {
      lit = true;
      digitalWrite(LED, HIGH);
      Serial.println("движение — свет включён");
    }
  }

  // Гасим только после паузы: датчик между движениями коротко «гаснет».
  if (lit && millis() - lastMotion > HOLD_MS) {
    lit = false;
    digitalWrite(LED, LOW);
    Serial.println("тихо — свет выключен");
  }
  delay(20);
}

Скетч можно править и запускать в симуляторе без платы и установки среды.

Что учесть на Arduino

Частые ошибки при подключении к Arduino

Другие детали для Arduino