====== Ультразвуковой дальномер HC-SR04 ======
===== Описание =====
Ультразвуковой дальномер HC-SR04 - предназначен для измерения расстояний от 2 до 400 см, причем предел точности может достигать до 3 мм. Модуль включает ультразвуковой передатчик, приёмник и узел контроля.
Основной принцип работы:
  - Использование триггера ввода/вывода для подачи сигнала (минимум 10 миллисекунд)
  - Модуль автоматически отправляет 40 кГц сигнал и определяет возвращается ли импульсный сигнал
  - Если сигнал возвращается, проверяется время между отправкой и возвратом
Расстояние вычисляется по формуле: Расстояние = Время высокого уровня * Скорость звука (340 м/с) / 2 или Расстояние в сантиметрах = Время в мс / 58.

==== Технические характеристики ====
  * Рабочее напряжение 5 В
  * Потребление тока 15 мА
  * Рабочая частота 40 Гц
  * Максимальное измеряемое расстояние 4 м
  * Минимальное измеряемое расстояние 2 см
  * Угол измерений 15°

==== Физические размеры ====
  * Модуль (Д х Ш х В): 45 х 20 х 15 мм

==== Плюсы использования данных датчиков ====
  * Самое популярное и недорогое решение
  * Высокая скорость измерения

==== Минусы использования данных датчиков ====
  * Невысокая точность измерения (возможно связана с калибровкой формулы расчета расстояния)

//Примечание: Иногда при измерении может происходить "зависание" датчика. Датчик периодически выводит 0. Связано это с использованием функции pulseIn при измерении расстояния, которая ждет сигнала HIGH, не учитывая что он там уже может быть.// 

===== Пример подключения и использования =====
В примере рассматривается измерение расстояния с помощью датчика и вывод расстояния в монитор Serial-порта. Для тестирования примера использовался контроллер Smart UNO.

^ Что нужно                                                                                                                          ^ Кол-во, шт  ^
| [[http://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер Smart UNO]]                                       | 1           |
| [[http://smartelements.ru/collection/datchiki-i-sensory/product/ultrazvukovoy-dalnomer-hc-sr04|Ультразвуковой дальномер HC-SR04]]  | 1           |
| [[http://smartelements.ru/collection/provoda-i-kabeli/product/nabor-provodov-20-sht-20sm-papa-mama|Провода папа-мама]]             | 4           |

**Схема подключения:**
{{ главная:датчики:hcsr04.jpg |}}

**Скетч для загрузки:**
<file Arduino>
const int Trig = 8; //пин для вывода датчика Trig
const int Echo = 9; //пин для вывода датчика Echo
unsigned int time_us = 0; //переменнная для хранения времени отклика
unsigned int distance_cm = 0; //переменнная для хранения расстояния

void setup() {
  pinMode(Trig, OUTPUT); //установка режима пина
  pinMode(Echo, INPUT); //установка режима пина

  Serial.begin(9600); //инициализация Serial-порта
}

void loop() {
  digitalWrite(Trig, HIGH); //подается ультразвуковой сигнал с датчика
  delayMicroseconds(10); //продолжается передача 10 микросекунд
  digitalWrite(Trig, LOW); //подача сигнала прекращается
  time_us = pulseIn(Echo, HIGH); //замер длины импульса
  distance_cm = time_us/58; //пересчет в сантиметры. Для данного датчика постоянная для перевода - 58

  //если произошло зависание, попытаться сбросить пин подключения Echo
  if(distance_cm == 0)
  {
    pinMode(Echo, OUTPUT);
    digitalWrite(Echo, LOW);
    pinMode(Echo, INPUT);
    return;
  }
  
  //Вывод данных в монитор порта
  Serial.print("The distance is ");
  Serial.print(distance_cm); 
  Serial.println(" sm.");

  delay(100); //задержка
}
</file>