Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Сделать код для ардуино

Тимофей Кравченко Ученик (98), на голосовании 4 месяца назад
Нужен код:

Задача - датчик движения реагирует и включает сервопривод, который поворачивается на 90 градусов и обратно на 0.
Мои подключения - сервопривод-3 pin, датчик движения-4 pin.

Плата - Arduino nano
Голосование за лучший ответ
Иван Гуру (4436) 5 месяцев назад
#include <Servo.h>

Servo myservo;

const int servoPin = 3;
const int motionSensorPin = 4;

int motionState = LOW;
int lastMotionState = LOW;

void setup() {
myservo.attach(servoPin);
pinMode(motionSensorPin, INPUT);
}

void loop() {
motionState = digitalRead(motionSensorPin);
if (motionState == HIGH && lastMotionState == LOW) {
myservo.write(90);
delay(1000);
myservo.write(0);
delay(1000);
}
lastMotionState = motionState;
}
ИванГуру (4436) 5 месяцев назад
Я этот код писал еще в 10 классе. Могу его усовершенствовать в случае не работоспособности.
Анонимус Просветленный (33010) 5 месяцев назад
 #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); // Выключаем светодиод
}
}
ИванГуру (4436) 5 месяцев назад
?
Похожие вопросы