Датчик PIR уже находится на высоком уровне, хотя он не обнаруживает человека

Я делал подобные коды с помощью tinkercad.

const int temperature = A0;

int pir = 7;

void setup()
{
  pinMode(pir, INPUT);
  
  Serial.begin(115200);
}

void loop()
{
  int pir_state = digitalRead(pir);
  
  int value_temp = analogRead(temperature);
  float volt = (value_temp * 5.0) / 1024.0;
  float tempC = (volt - 0.5)*100;
    
  if (tempC >= 22 && pir_state == 1)
  {
    Serial.print(tempC);
    Serial.println("C");
  }
  
  delay(1000);
}

И на следующем рисунке изображена схема, которую я сделал.

Я смоделировал эту схему. Первоначально pir_state будет равен нулю, когда датчик PIR не обнаруживает человека или объект, но pir_state всегда высокое, независимо от обнаружения. Я подумал, что значение pir было неверным, поэтому я прочитал pir. Затем я обнаружил, что значение pir всегда равно 7 независимо от обнаружения.

Я знаю, что это не имеет большого значения для вас, ребята, но на самом деле я нуб, поэтому я не могу понять, что не так. Пожалуйста, не могли бы вы помочь найти, что с этим происходит, и сказать мне, в чем проблема?

Вот ссылка на схему, которую я делаю. https://www.tinkercad.com/things/luV81NLkWKo-engineering- designcapstone-design/editel?sharecode=qsYWcgpijodDbgIpsfluJ3yUJwuN-70doPT62QNTv1Q

, 👍-1

Обсуждение

Значение «pir» равно 7, потому что это номер контакта, который вы ему присвоили. Вас должно интересовать значение «pir_state», которое должно быть выходом датчика PIR. Для вашей ссылки Tinkercad требуется учетная запись, поэтому большинство людей не удосужились бы посмотреть, что там., @StarCat

Вы можете подтвердить код, подключив контакт 7 к земле вместо датчика PIR. Если pir_state равно нулю, код работает правильно. Я не знаю tinkercad в деталях. Как срабатывает датчик PIR во время моделирования? Нажав на нее?, @chrisl

Не имея (и, вероятно, не собираюсь) учетной записи TinkerCad, я не могу в достаточной мере убедить себя в том, что соединение, которое вы сделали с выходным контактом датчика PIR, с черным выводом, заканчивающимся на цифровом контакте 7, действительно в соответствии с симулятор. Вы можете устранить эту проблему, показав, что у вас все еще есть проблема, если вы не делаете ничего другого, кроме использования [более обычного способа вставки его в плату] (https://www.tinkercad.com/things/jkVCSRPQCFC-pir-sensor- with-led), который также работает (без учетной записи)., @timemage

@user299980 user299980 Я посмотрел на вашу модель TinkerCAD ... датчик PIR не подключен к Arduino, @jsotola


1 ответ


0

Обновление:

@jsotola прокомментировал, что Tinkercad имеет некоторые возможности для имитации поведения PIR. Итак, моим следующим шагом было бы временно заменить блок if(){ ... }' в вашей функции loop() несколькими операторами, которые печатают ваши входные данные и вычисленные значения один раз в секунду и запускают это в то время как я настраивал симулированное ИК-устройство и термодатчик (если симуляция позволяет вам это сделать).

Выходные значения терминала должны привести вас к тому, что когда-либо работало не так, как вы ожидали.

Вы запускаете свою программу в моделировании, но датчик PIR является активным устройством, которое реагирует на внешние физические входные данные (изменения в инфракрасном освещении на нем), измененные настройками чувствительности на устройстве. Трудно смоделировать активную среду устройства. Если симуляция не предлагает вам способ симулировать это, на самом деле нет способа симулировать его входные данные для вашей программы, поэтому постоянный вывод (как видно из вашего симулируемого кода) имеет смысл.

Без симулятора, позволяющего предварительно запрограммировать физическую среду пассивного инфракрасного датчика, единственный способ увидеть его активное поведение – это использовать настоящий пассивный инфракрасный датчик и отслеживать его реальные выходные данные, пока вы меняете его фактическую среду. - например, помахать рукой перед ним - и посмотреть реакцию с помощью Arduino, светодиода (и резистора) на землю или DVM.

,

TnkerCAD показывает поле зрения PIR во время моделирования ... щелчок указателя мыши в поле генерирует событие движения, @jsotola

Спасибо, что разъяснили это!, @JRobert