#include <LiquidCrystal.h>
#define trigpin 3
#define echopin 2
#define buzzer 11
const int rs = 4, en = 6, d4 = 7, d5 = 8, d6 = 9, d7 = 10;
LiquidCrystal lcd(rs,en,d4,d5,d6,d7);
float distance , temp;
void setup() {
// put your setup code here, to run once:
// 这部分是LCD的功能初始化
pinMode(5, OUTPUT);
digitalWrite(5, LOW);
lcd.begin(16,2);
Serial.begin(115200);
pinMode(trigpin, OUTPUT);
pinMode(echopin, INPUT);
pinMode(buzzer, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
// 初始化HC-SRO04
digitalWrite(trigpin, LOW);
delayMicroseconds(2);
digitalWrite(trigpin, HIGH);
delayMicroseconds(10);
digitalWrite(trigpin, LOW);
// 计算结果
temp = float(pulseIn(echopin, HIGH));
distance = (temp*17)/1000;
if( distance <= 60)
{
if(distance <= 30)
{
tone(buzzer,2200);
}
else
{
float val = (distance - 30)*20;
tone(buzzer,2000);
delay(200);
noTone(buzzer);
delay(val);
}
}
else{ // 这部分是大于6-
noTone(buzzer);
}
// 串口打印出结果
Serial.print("探头距离障碍物为:");
Serial.print(distance);
Serial.println("cm");
// 在LCD显示
lcd.setCursor(0,0);
lcd.print("distance:");
lcd.print(distance);
lcd.println("cm");
delay(100);
}