0 голосов
const int motionSensorPin = 2;    // Пин для датчика движения
const int ledPin = 3;            // Пин для светодиода
const int photoResistorPin = A0; // Пин для фоторезистора
const int threshold = 800;       // Пороговое значение для фоторезистора
const int trainDelay = 5000;     // Задержка в миллисекундах при обнаружении поезда

bool isTrainPresent = false;      // Флаг наличия поезда
bool isMotionDetected = false;    // Флаг обнаружения движения

void setup() {
  pinMode(motionSensorPin, INPUT);
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  // Определение наличия поезда
  int photoResistorValue = analogRead(photoResistorPin);
  if (photoResistorValue < threshold) {
    isTrainPresent = true;
  } else {
    isTrainPresent = false;
  }

  // Если поезд присутствует, датчик движения и светодиод отключены
  if (isTrainPresent) {
    digitalWrite(ledPin, LOW);
    delay(trainDelay);
    return;
  }

  // Обнаружение движения
  if (digitalRead(motionSensorPin) == HIGH) {
    isMotionDetected = true;
    Serial.println("Motion detected!");
  }

  // Включение светодиода при обнаружении движения
  if (isMotionDetected) {
    digitalWrite(ledPin, HIGH);
    delay(500);
    digitalWrite(ledPin, LOW);
    delay(500);
  }
}
(2 баллов) 1 2

Пожалуйста, войдите или зарегистрируйтесь чтобы ответить на этот вопрос.

Добро пожаловать на Бредборд! Сайт вопросов и ответов на тему Arduino, Raspberry Pi и хоббийной электроники в целом. Цель Бредборда — быть максимально полезным. Поэтому мы строго следим за соблюдением правил, боремся с холиворами и оффтопиком.

    За этот месяц ещё никого.

    ...