#include <Arduino.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
const byte TRIG_PIN = 7;
const byte ECHO_PIN = 6;
const unsigned long READ_MS = 500; // Пауза між вимірюваннями
const byte LCD_ADDRESS = 0x27;
const char TITLE[] = "Distance:"; // Заголовок до 16 символів
LiquidCrystal_I2C lcd(LCD_ADDRESS, 16, 2);
float readDistanceCm() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH); // Імпульс запуску датчика
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
unsigned long echoUs = pulseIn(ECHO_PIN, HIGH, 25000UL);
float cm = echoUs / 58.0;
if (echoUs == 0 || cm < 2 || cm > 400) {
return -1;
}
return cm;
}
void setup() {
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
digitalWrite(TRIG_PIN, LOW);
Serial.begin(115200);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print(TITLE);
}
void loop() {
float cm = readDistanceCm();
if (cm < 0) {
Serial.println("No echo");
} else {
Serial.print("Distance: ");
Serial.print(cm, 1);
Serial.println(" cm");
}
lcd.setCursor(0, 1);
lcd.print(" "); // Очищаємо другий рядок
lcd.setCursor(0, 1);
if (cm < 0) {
lcd.print("No echo");
} else {
lcd.print(cm, 1);
lcd.print(" cm");
}
delay(READ_MS);
}