Главная » Статьи » Arduino с нуля » Работа с Arduino

Урок 6. Подключение ультразвукового дальномера к Arduino

 

Очень часто, в устройствах, созданных на Arduino, необходимо определить расстояние до препятствия. Для этих целей обычно используют инфракрасные или ультразвуковые дальномеры.

В этом уроке разберем подключение ультразвукового сонара HC-SR04 к Arduino. 

 

Предполагается, что Вы уже знакомы с данным дальномером, и имеете представление для чего он нужен и как с ним работать. Если же нет, то для начала советую прочесть статью "Ультразвуковой дальномер".

 

Для урока нам понадобятся следующие компоненты:

 

Собираем вот такую схему:

 

У меня получилось так:

 

 

Теперь, когда схема собрана, переходим к программной части. Открываем Arduino IDE и вставляем следующий скетч:

int echoPin = 9; 
int trigPin = 8; 
 
void setup() { 
 Serial.begin (9600); 
 pinMode(trigPin, OUTPUT); 
 pinMode(echoPin, INPUT); 
} 
 
void loop() { 
 int duration, cm;
 
 digitalWrite(trigPin, LOW); 
 delayMicroseconds(2); 
 digitalWrite(trigPin, HIGH); 
 delayMicroseconds(10); 
 digitalWrite(trigPin, LOW); 
 
 duration = pulseIn(echoPin, HIGH); 
 
 cm = duration / 58;
 
 Serial.print(cm); 
 Serial.println(" cm"); 
 delay(100);
}

 

Давайте разберемся с кодом. 

  • Объявляем переменные, отвечающие за Echo и Trig пины дальномера. 
    int echoPin = 9; 
    int trigPin = 8; 
  • В функции setup(), инициализируем скорость передачи данных в Serial порте. И настраиваем наши пины. Echo пин на вход, Trig пин на выход. 
    void setup() { 
     Serial.begin (9600); 
     pinMode(trigPin, OUTPUT); 
     pinMode(echoPin, INPUT); 
    }
  • Объявляем две переменные. В переменную duration будет записываться текущее значение с дальномера. А в переменную cm - тоже самое значение, только в сантиметрах.
    int duration, cm;
  • Далее подаем на Trig пин логическую единицу, тем самым дальномер отправляет звуковые импульсы. И через 10 мсек подаем 0, и дальномер перестает излучать. 
     digitalWrite(trigPin, LOW); 
     delayMicroseconds(2); 
     digitalWrite(trigPin, HIGH); 
     delayMicroseconds(10); 
     digitalWrite(trigPin, LOW); 
  • Теперь нужно принять отраженные от объектов звуковые импульсы. Для этого подаем на Echo пин логическую единицу через функцию pulseIn()
    duration = pulseIn(echoPin, HIGH);

    Функция pulseIn() считывает длину сигнала на заданном порту (HIGH или LOW). Например, если задано считывание HIGH функцией pulseIn(), функция ожидает пока на заданном порту не появиться HIGH. Когда HIGH получен, включается таймер, который будет остановлен когда на порту вход/выхода будет LOW. Функция pulseIn() возвращает длину сигнала в микросекундах. Функция возвращает 0, если в течение заданного времени (таймаута) не был зафиксирован сигнал на порту.
     
  • Далее переводим полученное значение в сантиметры
    cm = duration / 58;
  • Потом выводим наше значение в последовательный порт, выжидаем задержку в 100мсек и начинаем все заново. 
     Serial.print(cm); 
     Serial.println(" cm"); 
     delay(100);

Таким образом, в коде реализуется следующее: мы отправляем звуковые импульсы в пространство, потом мы эти импульсы получаем. В результате временной задержки, между отправленными и полученными импульсами, мы и формируем дальность. Потом переводим полученное значение в сантиметры, и выводим на экран. 

 

Например, если на расстоянии 10 см от дальномера, поставить какой-нибудь объект,

 

то на экране мы увидим следующее:

 

Видео работы такого устройства:

 

Задание для самостоятельного выполнения:

Сделайте так, чтобы в одной строке отображалось значение дальности в метрах, сантиметрах, и миллиметрах. Вот как здесь:

 

 

Десятый урок проекта "Arduino с нуля" подошел к концу. Надеюсь тема была для вас полезной, и вы узнали что-нибудь новое. Также надеюсь, что при выполнении задания у вас не возникнет вопросов и вы справитесь самостоятельно.

Если же что-нибудь не будет получаться, или у вас появятся какие-либо вопросы, не стесняйтесь, и оставляйте их в комментариях или же на форуме.  

 

Если Вам понравился наш урок, поделитесь им с друзьями.

 

 


←Предыдущий урок | Следующий урок→


 

Категория: Работа с Arduino | Добавил: GM (26.10.2015)
Просмотров: 3246 | Рейтинг: 5.0/2
Всего комментариев: 0
avatar