#include <LiquidCrystal_I2C.h>
// 假设LCD的I2C地址为0x27,列数为16,行数为2,根据实际情况修改
LiquidCrystal_I2C lcd(0x27, 16, 2);
// 定义引脚,和你图中接线对应
#define TRIG 2
#define ECHO 3
#define BUZZER 8
void setup() {
// 初始化引脚
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(BUZZER, OUTPUT);
Serial.begin(9600);
// 初始化LCD
lcd.init();
lcd.backlight();
lcd.print(" Distance: cm");
}
// 超声波测距函数
long getDistance() {
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
long time = pulseIn(ECHO, HIGH);
// 转换为距离,单位厘米
long distance = time * 0.034 / 2;
return distance;
}
void loop() {
long dis = getDistance();
Serial.print("Distance: ");
Serial.print(dis);
Serial.println("cm");
// 更新LCD显示
lcd.setCursor(9, 0);
lcd.print(dis);
lcd.print(" ");
// 分级蜂鸣报警:距离越近,鸣叫越急促
if (dis < 20) {
// 近距离:急促鸣叫
tone(BUZZER, 2000);
delay(100);
noTone(BUZZER);
delay(100);
} else if (dis < 50) {
// 中距离:间隔鸣叫
tone(BUZZER, 1000);
delay(300);
noTone(BUZZER);
delay(300);
} else {
// 远距离:关闭报警
noTone(BUZZER);
delay(200);
}
}