Подключение датчика движения HC-SR501 к Arduino
Датчик движения (PIR)
HC-SR501 к Arduino — питание 5 В, земля и OUT на цифровой вывод. Выход читается через digitalRead(); для реакции без опроса подойдёт вывод с прерыванием (D2 или D3 на Uno).
Схема подключения датчика движения HC-SR501 к Arduino
| HC-SR501 | Arduino Uno |
|---|---|
| OUT | D2 |
| VCC | 5V |
| GND | GND |
Схема из примера «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
- 5 В у Arduino Uno есть на отдельном выводе 5V; выход датчика совпадает с логикой платы.
- Прерывание по фронту ловит начало движения, но время удержания всё равно определяет сам датчик.
Частые ошибки при подключении к Arduino
- Опрос датчика внутри
delay()на несколько секунд: движение пропускается, пока скетч спит. Используйтеmillis(). - Мерить продолжительность движения по выходу: он высокий всё время удержания, а не пока человек двигается.
- Питание от 3,3 В: модуль не включается или срабатывает хаотично. Нужны 5 В.
- Скетч не ждёт прогрева: в первую минуту датчик срабатывает сам по себе. Игнорируйте выход первые 30–60 секунд.
- Подсчёт срабатываний по уровню, а не по фронту: пока выход высокий, счётчик растёт на каждом проходе
loop(). - Датчик у обогревателя, кондиционера или на сквозняке: он видит изменение тепла и срабатывает без людей.
Ещё по теме
Другие детали для Arduino
HC-SR04DHT22 (AM2302)BME280DS3231SSD1306 OLED 0,96″LCD 1602 с I2CMAX7219TM1637Модуль релеKY-040Клавиатура 4×4HX711ФоторезисторМодуль microSDRGB-светодиодСервопривод SG9074HC595Шаговый двигательКнопкаПотенциометрПьезопищалкаСветодиодПолзунковый переключательTTP223Датчик влажности почвыMQ-2LM35Джойстик KY-023DHT11HTU21D