#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// LCD 16x2 по адресу 0x27
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int echoPin = 10; // ECHO HC-SR04
const int trigPin = 9; // TRIG HC-SR04
const int buttonPin = 2; // Кнопка
bool sensorOn = false; // Состояние датчика
int buttonState;
int lastButtonState = HIGH; // используем INPUT_PULLUP
void setup() {
pinMode(buttonPin, INPUT_PULLUP); // кнопка между D2 и GND
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
lcd.init(); // инициализация дисплея
lcd.backlight(); // включаем подсветку
lcd.setCursor(0, 0);
lcd.print("System ready");
delay(1000);
lcd.clear();
}
void loop() {
buttonState = digitalRead(buttonPin);
// переключение состояния по кнопке
if (buttonState == LOW && lastButtonState == HIGH) {
sensorOn = !sensorOn;
delay(200); // антидребезг
}
lastButtonState = buttonState;
lcd.setCursor(0, 0);
if (sensorOn) {
// генерируем импульс TRIG
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// измеряем время отклика
long duration = pulseIn(echoPin, HIGH);
long distance = duration * 0.034 / 2; // расстояние в см
lcd.print("Dist: ");
lcd.print(distance);
lcd.print(" cm "); // пробелы стирают старые цифры
} else {
lcd.print("Sensor OFF ");
}
}