Подключение HC-SR04 к Arduino

Ультразвуковой датчик расстояния

К Arduino Uno и Nano HC-SR04 подключается без дополнительных деталей: питание 5 В, земля и два цифровых вывода под TRIG и ECHO. Уровни датчика и платы совпадают, делитель не нужен.

Схема подключения HC-SR04 к Arduino

HC-SR04Arduino Uno
ECHOD7
TRIGD6
VCC5V
GNDGND

Схема из примера «Arduino Uno: дальномер HC-SR04».

Arduino Uno: дальномер HC-SR04

Открыть пример целиком

Выводы HC-SR04

ВыводНазначение
ECHOвыход: длительность высокого уровня — время полёта звука
TRIGвход запуска: импульс 10 мкс начинает измерение
VCCпитание 5 В
GNDобщий провод

Код для Arduino

// Дальномер: импульс туда, время обратно.
//
// Работает он буквально как эхолот. На TRIG подаётся импульс в 10
// микросекунд, датчик пищит ультразвуком, а на ECHO держит высокий
// уровень ровно столько, сколько звук летел туда и обратно.
//
// Дальше — арифметика. Звук идёт примерно 343 метра в секунду, то есть
// 29 микросекунд на сантиметр. Путь двойной, поэтому делим ещё на два:
//
//     расстояние = время / 29 / 2
//
// Библиотека здесь не нужна: весь датчик — это два вывода и pulseIn.
// Заодно видно, чем он занят, а не только результат.
//
// Таймаут в pulseIn обязателен. Без него функция ждёт ответа вечно, и
// отвалившийся провод превращается в зависшую плату. 30 миллисекунд —
// это примерно пять метров, дальше датчик всё равно не видит.
//
// Крутите ползунок расстояния на детали.

const int TRIG = 6;
const int ECHO = 7;

void setup() {
  pinMode(TRIG, OUTPUT);
  pinMode(ECHO, INPUT);
  Serial.begin(9600);
}

void loop() {
  digitalWrite(TRIG, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG, LOW);

  unsigned long us = pulseIn(ECHO, HIGH, 30000UL);

  if (us == 0) {
    Serial.println(F("нет ответа: слишком далеко или провод отошёл"));
  } else {
    float cm = us / 29.0 / 2.0;
    Serial.print("cm:");
    Serial.println(cm, 1);
  }

  delay(200);
}

Скетч можно править и запускать в симуляторе без платы и установки среды.

Что учесть на Arduino

Частые ошибки при подключении к Arduino

Другие детали для Arduino