СОЗДАВАЙТЕ ШАГ ЗА ШАГОМ
Измерение расстояния ультразвуковым датчиком
Простой проект Arduino для измерения небольших расстояний ультразвуковым датчиком.
13.04.2019Уроки Arduino
HC-SR04 — недорогой ультразвуковой датчик для измерения небольших расстояний. Передатчик испускает импульс, который отражается от препятствия, а приёмник фиксирует эхо. По времени прохождения сигнала вычисляется расстояние.
Подключение HC-SR04
| Вывод датчика | Arduino Uno |
|---|
| 5V | 5V |
| TRIG | Digital 2 |
| ECHO | Digital 3 |
| GND | GND |
Подключение LCD I2C
| Вывод LCD | Arduino Uno |
|---|
| GND | GND |
| 5V | 5V |
| SDA | A4 |
| SCL | A5 |
Принцип работы
- На TRIG подаётся высокий уровень длительностью 10 микросекунд.
- Модуль отправляет сигнал 40 кГц и ждёт его возврата на ECHO.
- Arduino измеряет время между отправкой и приёмом сигнала.
Расстояние = (время × скорость звука 340 м/с) / 2
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7
LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
const int trigPin = 3;
const int echoPin = 2;
long duration;
int distanceCm, distanceInch;
void setup() {
lcd.begin (16,2);
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
lcd.setBacklight(HIGH);
lcd.home ();
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distanceCm = duration * 0.0340 / 2;
distanceInch = duration * 0.01330 / 2;
lcd.setCursor(0, 0);
lcd.print("Distanta: ");
Serial.println(distanceCm);
lcd.print(distanceCm);
lcd.print(" cm");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.print(distanceInch);
lcd.print(" inch");
delay(1000);
}
Схема проекта
Скачать библиотеку ↓