Требуется включить светодиод, если расстояние до объекта меньше или равно 200 сантиметрам. Найдите ошибку в коде

int trigPin = 10;

const int echoPin = 8;

int led = 7;

const int distance = 200;

void setup()
{
    pinMode(trigPin, OUTPUT);
    pinMode(echoPin, INPUT);
    pinMode(led, OUTPUT);
}
void loop()
{
    int duration, cm;
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);

    duration = pulseIn(echoPin, HIGH);
    cm = duration/58;
    if (cm < distance)
    {
        digitalWrite(led, HIGH);
    }
    else
    {
        digitalWrite(led, LOW);
    }
    delay(100);
}

, 👍-1

Обсуждение

В чем именно у вас проблема с кодом? Или это школьная практика?, @chrisl

Сам не могу найти ошибку в коде., @user90289

Как узнать, что есть ошибка. Дайте нам описание вашей проблемы, @chrisl

Протестировано через https://www.tinkercad.com. Не работает корректно, не выполнил задание., @user90289

В триггере изображения подключен к контакту 9, ваш код говорит о контакте 10. Решит ли это вашу проблему, если вы используете правильный контакт?, @chrisl

пожалуйста, опишите проблему... что она делает? ... Не работает правильно - бесполезное описание проблемы, @jsotola

*Не работает корректно* - Хорошо, вы сказали, чего он не делает. Что оно делает? Светодиод горит или нет?, @Nick Gammon


1 ответ


0
  1. У вас есть trigPin как контакт 10, однако ваша схема подключения показывает, что он подключен к контакту 9, так что это не сработает.

  2. pulseIn возвращает unsigned long (микросекунды) — см. pulseIn. Вы собираете результаты в int с максимальным значением 32767. Это значение может быть переполненным и, следовательно, неправильным.

,