Время эха ультразвукового датчика
Часть раздела Дисплеи и датчики путешествия по Arduino на Coddy. Урок 18 из 24.
HC-SR04 измеряет расстояние, как летучая мышь: он посылает щелчок на слишком высокой для нас частоте и измеряет время до эха. Чем дальше находится объект, тем дольше возвращается эхо.
У него два сигнальных контакта. Короткий импульс HIGH на TRIG заставляет его щёлкнуть. Затем ECHO переходит в HIGH и остаётся в этом состоянии, пока не вернётся эхо, поэтому длительность этого импульса HIGH равна времени, которое понадобилось звуку.
delayMicroseconds() делает паузу в миллионных долях секунды — достаточно короткую для запускающего импульса длительностью 10 микросекунд. pulseIn(pin, HIGH) ждёт, пока контакт перейдёт в HIGH, и возвращает количество микросекунд, в течение которых он оставался в HIGH. Если импульс не поступит в течение секунды, функция прекращает ожидание и возвращает 0.
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10); // импульс запуска
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);Эхо может длиться до 38000 микросекунд — больше, чем может вместить int, поэтому сохраняй его в long.
Задание
СреднеTRIG подключён к выводу 9, а ECHO — к выводу 10. В loop():
- отправь импульс HIGH длительностью 10 микросекунд на TRIG
- измерь эхо с помощью
pulseIn(echoPin, HIGH) - выведи время с помощью
Serial.println()
Нажми Run, перемещай объект ближе и дальше на плате, затем нажми Check.
Попробуйте сами
const int trigPin = 9;
const int echoPin = 10;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
// отправь импульс длительностью 10 микросекунд на TRIG
// измерь длительность эхо-сигнала с помощью pulseIn() и выведи её
delay(200);
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Дисплеи и датчики
1Семисегментные дисплеи
Семисегментный дисплейШаблоны цифр в байтахСчёт на дисплееОбратный отсчёт до нуляБросок кубика4Датчики
Время эха ультразвукового датчикаПеревод времени эха в сантиметрыТемпература с помощью термистораПеревод градусов Цельсия в ФаренгейтыИндикатор уровня освещённостиРасстояние на LCDТермометр на LCDПотренируйтесь самостоятельно: Песочница Arduino