Menu
CoddyTech

Парковочный датчик: расстояние

Часть раздела Проекты путешествия по Arduino на Coddy. Урок 9 из 24.

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

Как и в разделе «Дисплеи и датчики», импульс длительностью 10 микросекунд на TRIG отправляет сигнал, а pulseIn(echoPin, HIGH) возвращает, как долго ECHO оставался в состоянии HIGH, в микросекундах. Звуку требуется около 58 микросекунд, чтобы пройти один сантиметр и вернуться, поэтому расстояние в сантиметрах равно этому времени, делённому на 58 (то же самое, что duration * 0.034 / 2). Поместим всё это в одну функцию:

long readDistance() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  long duration = pulseIn(echoPin, HIGH);
  return duration / 58;
}

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

challenge icon

Задание

Легко

У датчика TRIG подключён к выводу 9, а ECHO — к выводу 10:

  • напиши readDistance(): импульс запуска, pulseIn() и время, делённое на 58
  • в loop() выводи расстояние с помощью Serial.println() каждые 100 мс

Нажми Run, перетащи расстояние на датчике, затем нажми Check.

Попробуйте сами

// Датчик расстояния
const int trigPin = 9;
const int echoPin = 10;

// Отправить импульс и вернуть расстояние в cm.
long readDistance() {

}

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.begin(9600);
}

void loop() {
  // вывести расстояние, затем подождать 100 ms

}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Проекты

Потренируйтесь самостоятельно: Песочница Arduino