#include <Servo.h>
Servo myServo; // Создаем объект сервопривода
const int motionPin = 4; // Пин, к которому подключен датчик движения
const int servoPin = 3; // Пин, к которому подключен сервопривод
const int ledPin = 5; // Пин, к которому подключен светодиод
int servoAngle = 90; // Угол поворота сервопривода
unsigned long lastTrigger = 0; // Время последнего срабатывания
const unsigned long debounceDelay = 2000; // Задержка между срабатываниями (2 секунды)
void setup() {
myServo.attach(servoPin); // Привязываем сервопривод к пину
pinMode(motionPin, INPUT); // Устанавливаем пин датчика движения как вход
pinMode(ledPin, OUTPUT); // Устанавливаем пин светодиода как выход
}
void loop() {
int motionState = digitalRead(motionPin); // Читаем состояние датчика движения
unsigned long currentMillis = millis(); // Получаем текущее время
if (motionState == HIGH && (currentMillis - lastTrigger >= debounceDelay)) { // Если движение обнаружено и прошло достаточно времени
lastTrigger = currentMillis; // Обновляем время последнего срабатывания
digitalWrite(ledPin, HIGH); // Включаем светодиод
myServo.write(servoAngle); // Поворачиваем сервопривод на заданный угол
delay(1000); // Ждем 1 секунду
myServo.write(0); // Возвращаем сервопривод обратно на 0 градусов
delay(1000); // Ждем 1 секунду
digitalWrite(ledPin, LOW); // Выключаем светодиод
}
}
Задача - датчик движения реагирует и включает сервопривод, который поворачивается на 90 градусов и обратно на 0.
Мои подключения - сервопривод-3 pin, датчик движения-4 pin.
Плата - Arduino nano