Платформа на которой будет реализован данный пример ардуино. Пример не использует никаких библиотек. Легко компилируется под любые линейки ардуино. Наглядно показывает процессы формирования и обработки сигнала.
И так приступим!
Для начала определим два пина к которым подключим датчик.

Создадим две переменные для хранения данных с датчика, и для последующей работы с ними.

Конфигурируем порты для подключения датчика и устанавливаем скорость работы серийного порта на уровне 9600 бод/с.

Здесь показываю как именно формируется сигнал. Это достигается путем подачи кратковременного импульса на соответствующие выходы датчика а потом регистрации отраженного звука на соответствующем входе датчика. Импульс который мы отправим составит 5 микросекунд и по этому на приемном входе датчика у нас время задержки 10 микросекунд. За этот период времени сигнал успеет отправится и прийти в виде отраженного звука обратно в датчик.
Тогда преобразовываем данные полученные с датчика в расстояние в сантиметрах. Можно и в милях для кого как удобно, но для этого потребуется внести коррективы в код.
Выводим данные в серийный порт компьютера для наглядности.
Для корректной работы установим задержку
Привожу полный листинг программы. Можете его использовать в своих самоделках, код старался привести максимально понятно и подробно. Самый очевидный пример использования в роботах с объездом препятствий или ультразвуковая рулетка как вариант.
#define PIN_TRIG 12// объявляем пин подключения датчика
#define PIN_ECHO 11// объявляем пин подключения датчика
long interval, cm;// объявляем переменную для хранения данных с датчика
void setup() {// конфигурируем порты программы
Serial.begin (9600);// настраиваем серийный порт на скорость 9600 бод
pinMode(PIN_TRIG, OUTPUT);//определяем порт как выходной
pinMode(PIN_ECHO, INPUT);//определяем порт как входной
}
void loop() {// основной цикл программы
// формирование импульса для определения расстояния
digitalWrite(PIN_TRIG, LOW);//устанавливаем на цифровом порту низкий уровень сигнала
delayMicroseconds(5);// устанавливаем задержку длительностью 5 микросекунд
digitalWrite(PIN_TRIG, HIGH);//устанавливаем на цифровом порту высокий уровень сигнала
delayMicroseconds(10);//устанавливаем задержку длительностью 10 микросекунд
digitalWrite(PIN_TRIG, LOW);//устанавливаем на цифровом порту низкий уровень сигнала
// время задержки акустического сигнала на эхолокаторе.
interval = pulseIn(PIN_ECHO, HIGH);//определяем временной интервал и учитываем
//погрешность при измерении сигналов на цифровом порту
// преобразовываем время в расстояние
cm = (interval / 2) / 29.1;//для получения расстояния интервал делим пополам и на константу 29,1
Serial.print("Расстояние до объекта: ");// выводим в серийный порт надпись
Serial.print(cm);// пишем в серийный порт вычисленное расстояние
Serial.println(" см.");// выводим в серийный порт надпись
// задержка между измерениями для корректной работы скеча
delay(200);// задержка 200 милисекунд(при желании можно убрать из скетча на работу не повлияет)
}