Парковочный датчик: расстояние
Часть раздела Проекты путешествия по 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;
}Выполняйте измерения примерно десять раз в секунду: датчику нужен небольшой перерыв между сигналами, иначе запоздавшее эхо от предыдущего сигнала можно принять за новое.
Задание
ЛегкоУ датчика 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
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Проекты
3Парковочный датчик
Парковочный датчик: расстояниеПарковочный датчик: световые сигналыПарковочный датчик: звуковые сигналыПарковочный датчик: дисплейПотренируйтесь самостоятельно: Песочница Arduino