#include <LiquidCrystal.h>
// Порогові значення відстані до об'єкта, см
const int threshold1 = 64;
const int threshold2 = 54;
// Підключення рідкокристалічного дисплея LCD 16x2
LiquidCrystal lcd(12, 11, 9, 8, 7, 6);
// Підключення давача відстані HC-SR04
const int trigPin = 3;
const int echoPin = 4;
// Підключення п'єзодинаміка
const int buzzerPin = 5;
// Підключення світлодіода
const int ledPin = 2;
void setup() {
// Ініціалізація дисплея та пінів для давача відстані, п'єзодинаміка і світлодіода
lcd.begin(16, 2);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(ledPin, OUTPUT);
// Виводимо початкове повідомлення на дисплей
lcd.print("Distance: ");
}
void loop() {
// Вимірюємо відстань до об'єкта
long duration;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
// Переводимо відстань у сантиметрах
int distanceCM = duration / 29 / 2;
// Виводимо відстань на дисплей
lcd.setCursor(10, 0);
lcd.print(" "); // Очищаємо старе значення
lcd.setCursor(10, 0);
lcd.print(distanceCM);
lcd.print(" cm");
// Перевіряємо, чи відстань нижче порогового рівня 1
if (distanceCM < threshold1) {
// Включаємо п'єзодинамік і збільшуємо частоту звукового сигналу
digitalWrite(buzzerPin, HIGH);
delay(100); // Коротка пауза між вимиканням і увімкненням
digitalWrite(buzzerPin, LOW);
delay(100); // Коротка пауза перед наступним вимиканням
}
// Перевіряємо, чи відстань нижче порогового рівня 2
if (distanceCM < threshold2) {
// Включаємо світлодіод і виводимо попередження на дисплей
digitalWrite(ledPin, HIGH);
lcd.setCursor(0, 1);
lcd.print("Danger! Object");
} else {
// Вимикаємо світлодіод і видаляємо попередження з дисплея
digitalWrite(ledPin, LOW);
lcd.setCursor(0, 1);
lcd.print(" "); // Очищаємо рядок
}
delay(500); // Затримка між вимірюваннями
}