Вывод расстояния на LCD 1602 с использованием ультразвукового датчика и Arduino
В проекте «Вывод расстояния на LCD 1602 с использованием ультразвукового датчика и Arduino» используется ультразвуковой датчик для измерения расстояния до объекта и ЖК-дисплей 1602 с интерфейсом I2C для отображения результата. При приближении объекта к датчику на расстояние менее определенного значения, информация о расстоянии выводится на экран дисплея. Проект включает инструкции по установке необходимых библиотек AlashUltrasonic и LiquidCrystal_I2C, а также пример кода для реализации этой функции. Этот проект подходит для систем безопасности, робототехники и автоматизации.
Этот проект демонстрирует, как использовать ультразвуковой датчик для измерения расстояния и отображения результата на ЖК-дисплее 1602 с интерфейсом I2C. Такой проект может быть полезен для различных приложений, включая системы безопасности, робототехнику и автоматизацию.
Полезная информация
Ультразвуковой датчик HC-SR04:
Диапазон измерения: от 2 см до 400 см
Точность измерения: около 3 мм
Угол измерения: примерно 15 градусов
Частота: 40 кГц
ЖК-дисплей 1602 с интерфейсом I2C:
Разрешение: 16 символов на 2 строки
Протокол: I2C (Интерфейс межсвязи)
Адрес по умолчанию: 0x27 или 0x3F (может варьироваться, проверьте документацию)
Подключение компонентов:
ЖК-дисплей: Использование интерфейса I2C позволяет существенно сократить количество проводов, необходимых для подключения дисплея к Arduino. Всего два провода (SDA и SCL) используются для передачи данных и управления дисплеем.
Ультразвуковой датчик: Работает путем отправки звукового импульса и измерения времени, за которое импульс возвращается. Это позволяет определить расстояние до объекта.
Необходимые компоненты
Arduino Uno
Ультразвуковой датчик (например, HC-SR04)**
ЖК-дисплей 1602 с интерфейсом I2C**
Соединительные провода
Макетная плата (опционально)
Подключение компонентов
Ультразвуковой датчик:
Vcc к 5V на Arduino
Trig к порту 2 на Arduino
Echo к порту 3 на Arduino
Gnd к Gnd на Arduino
ЖК-дисплей 1602 с интерфейсом I2C:
VCC к 5V на Arduino
GND к GND на Arduino
SDA к A4 на Arduino
SCL к A5 на Arduino
Установка библиотек
AlashUltrasonic
Перейдите на официальный репозиторий библиотеки AlashUltrasonic на GitHub по следующей ссылке: AlashUltrasonic GitHub
На странице репозитория нажмите кнопку «Code» и выберите «Download ZIP» для скачивания архива с библиотекой.
После скачивания архива с библиотекой, распакуйте его в удобное для вас место на вашем компьютере.
Откройте Arduino IDE.
Перейдите в меню «Скетч» -> «Подключить библиотеку» -> «Добавить .ZIP библиотеку…».
В открывшемся окне проводника найдите и выберите скачанный и распакованный архив с библиотекой AlashUltrasonic. Нажмите «Открыть».
Arduino IDE автоматически установит библиотеку, и внизу окна появится сообщение «Библиотека добавлена. Проверьте меню „Подключить библиотеку“».
LiquidCrystal_I2C
Для установки библиотеки LiquidCrystal_I2C повторите те же шаги, что и для установки библиотеки AlashUltrasonic, используя следующую ссылку на репозиторий: LiquidCrystal_I2C GitHub
Пример кода
#include <AlashUltrasonic.h>
#include <LiquidCrystal_I2C.h> // Импортируем библиотеку
// Определение пинов для ультразвукового датчика и LCD
const uint8_t TRIGGER_PIN = A5;
const uint8_t ECHO_PIN = A4;
// Создание объектов для ультразвукового датчика и LCD
AlashUltrasonic sensor(TRIGGER_PIN, ECHO_PIN);
LiquidCrystal_I2C lcd(0x27, 16, 2); // Создание объекта lcd с адресом 0x27, размером 16x2
void setup() {
Serial.begin(9600);
sensor.begin();
lcd.init(); // Инициализация LCD
lcd.backlight(); // Включение подсветки
}
void loop() {
lcd.clear();
float distance = sensor.getDistance();
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
lcd.setCursor(0, 0);
lcd.print("Distance:");
lcd.print(distance);
lcd.print(" cm");
delay(1000);
}
Дополнительный пример: управление сервоприводом на основе расстояния
#include <Servo.h> // Подключаем библиотеку для работы с сервомотором
#include <AlashUltrasonic.h> // Подключаем библиотеку AlashUltrasonic для работы с ультразвуковым датчиком
Servo myservo; // Создаем объект сервомотора для управления
const uint8_t trigPin = A1; // Пин для триггера ультразвукового датчика
const uint8_t echoPin = A0; // Пин для эхо ультразвукового датчика
// Инициализация ультразвукового датчика
AlashUltrasonic sensor(trigPin, echoPin);
void setup() {
// Инициализация серийной связи:
Serial.begin(9600);
myservo.attach(9); // Подключаем сервомотор к пину 9
sensor.begin(); // Инициализируем ультразвуковой датчик
}
void loop() {
// Измеряем расстояние
long distance = sensor.getDistance();
// Условие для расстояния
if (distance < 20) {
myservo.write(90); // Устанавливаем позицию серво для открытия ворот
delay(4000); // Задержка для удержания ворот открытыми
myservo.write(0); // Закрываем ворота
} else {
myservo.write(0); // Держим ворота закрытыми
}
// Выводим расстояние в серийный монитор
Serial.print(distance);
Serial.print(" cm");
Serial.println();
delay(100);
}
Еще один пример: управление сервоприводом с помощью ультразвукового датчика
#include <Servo.h> // Подключаем библиотеку для работы с сервомотором
#include <AlashUltrasonic.h> // Подключаем библиотеку AlashUltrasonic для работы с ультразвуковым датчиком
Servo myservo; // Создаем объект сервомотора для управления
const uint8_t trigPin = A1; // Пин для триггера ультразвукового датчика
const uint8_t echoPin = A0; // Пин для эхо ультразвукового датчика
// Инициализация ультразвукового датчика
AlashUltrasonic sensor(trigPin, echoPin);
void setup() {
// Инициализация серийной связи:
Serial.begin(9600);
myservo.attach(9); // Подключаем сервомотор к пину 9
sensor.begin(); // Инициализируем ультразвуковой датчик
}
void loop() {
// Измеряем расстояние
long distance = sensor.getDistance();
// Условие для расстояния
if (distance < 20) {
myservo.write(90); // Устанавливаем позицию серво для открытия ворот
delay(4000); // Задержка для удержания ворот открытыми
myservo.write(0); // Закрываем ворота
} else {
myservo.write(0); // Держим ворота закрытыми
}
// Выводим расстояние в серийный монитор
Serial.print(distance);
Serial.print(" cm");
Serial.println();
delay(100);
}
Еще один пример: управление зуммером в зависимости от расстояния
#include <AlashUltrasonic.h>
// Определяем пины для ультразвукового датчика и зуммера
const uint8_t TRIGGER_PIN = A1;
const uint8_t ECHO_PIN = A0;
const uint8_t BUZZER_PIN = 11;
// Инициализация ультразвукового датчика
AlashUltrasonic sensor(TRIGGER_PIN, ECHO_PIN);
// Задаем пороговые расстояния для изменения частоты сигнала
int cm1 = 30; // расстояние, при котором зуммер начинает издавать звук с низкой частотой
int cm2 = 20; // расстояние, при котором зуммер издает звук со средней частотой
int cm3 = 10; // расстояние, при котором зуммер издает звук с высокой частотой
void setup() {
// Инициализация серийного порта для отображения информации
Serial.begin(9600);
// Устанавливаем режим работы пинов
pinMode(BUZZER_PIN, OUTPUT);
// Запускаем датчик
sensor.begin();
}
void loop() {
// выполняем 10 измерений и складываем результат
int distance = sensor.getDistance();
// Выводим расстояние в серийный монитор
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// Задаем частоту звука в зависимости от расстояния
int frequency;
if (distance >= cm1) {
noTone(BUZZER_PIN);
} else if (distance < cm1 && distance >= cm2) {
frequency = 1200; // низкая частота
tone(BUZZER_PIN, frequency, 200);
delay(150);
} else if (distance < cm2 && distance > cm3) {
frequency = 1250; // средняя частота
tone(BUZZER_PIN, frequency, 200);
} else if (distance <= cm3) {
frequency = 1300; // высокая частота
tone(BUZZER_PIN, frequency);
}
// Задержка перед следующим измерением
delay(250);
}
Заключение
Следуя этой инструкции, вы сможете установить библиотеки AlashUltrasonic и LiquidCrystal_I2C, и использовать их для создания проектов на Arduino. Этот проект демонстрирует, как использовать ультразвуковой датчик для измерения расстояния и отображать результаты на LCD дисплее, что может быть полезно в различных приложениях, таких как системы безопасности и робототехника. Экспериментируйте с настройками и компонентами, чтобы адаптировать проект под ваши нужды.