#include <Servo.h>
#define Echo D2
#define Trig D8
#define BEEP D5
#define DuoPIN D6
Servo myDuoji;
//超声波测距(原理:通过测得的时间/58得到距离cm)
long getTime()
{
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);
return pulseIn(Echo, HIGH); //arduino获取往返时间
}
//初始化超声波函数
void initChaoShengBo()
{
//初始化超声波的两个引脚
pinMode(Echo, INPUT);
pinMode(Trig, OUTPUT);
}
void setup(){
initChaoShengBo(); //函数调用,初始化超声波
Serial.begin(115200); //初始化波特率
Serial.println(“start”); //测试串口是否启动,启动成功发送start
pinMode(BEEP, OUTPUT); //将与蜂鸣器相对的D5引脚设为输出引脚
digitalWrite(BEEP, HIGH); //初始化D5引脚为高电平,防止一上电蜂鸣器就响
myDuoji.attach(DuoPIN); //将实例化的舵机与D6口建立联系
}
void loop(){
//获取距离
long dis; //定义距离变量 dis
dis = getTime()/58; //将时间/58即为测得的距离
Serial.print(dis); //在串口助手端输出测试的距离
Serial.println(“cm”); //输出cm单位后,换行
if(dis < 10){
digitalWrite(BEEP, LOW); //蜂鸣器响
myDuoji.write(90); //开盖
}
else{
digitalWrite(BEEP, HIGH); //蜂鸣器停止响
myDuoji.write(180); //关盖
}
delay(500);
}