/** 超声波雷达引脚 **/
#define DH1 523
#define WHOLE 1
#define HALF 0.5
#define QUARTER 0.25
#define EIGHTH 0.25
#define SIXTEENTH 0.625
#define ULTRASONIC_IN_PIN 2 // 超声波接收脚 E
#define ULTRASONIC_OUT_PIN 3 // 超声波发射脚 T
#define LED 4 //指示灯引脚
int tune[] = {DH1,DH1,DH1,DH1};
float duration[] = {1,0.5,0.5,1};
int length;
int beep = 12;
//距离
float distance = 0;
void setup() {
Serial.begin(9600);
pinMode(ULTRASONIC_IN_PIN, INPUT); //
pinMode(ULTRASONIC_OUT_PIN, OUTPUT); //
pinMode(beep,OUTPUT);
length = sizeof(tune)/sizeof(tune[0]);
Serial.println("-------------- start -----------------");
}
void loop() {
digitalWrite(ULTRASONIC_OUT_PIN, LOW); //
delayMicroseconds(2);
digitalWrite(ULTRASONIC_OUT_PIN, HIGH); //超声波发送一个不小于10us的高脉冲
delayMicroseconds(10);
digitalWrite(ULTRASONIC_OUT_PIN, LOW); //
float Fdistance = pulseIn(ULTRASONIC_IN_PIN, HIGH); // 读取返回脉冲宽度(即高电平持续的时间长短),单位为ms
distance = Fdistance / 5.8 / 10; // 时间转成距离 (单位:公分)
if(distance<=5){
digitalWrite(LED,HIGH);
for(int x=0;x<length;x++){
tone(beep,tune[x]);
delay(500*duration[x]);
noTone(beep);
delay(100);
}
}else{
digitalWrite(LED,LOW);
}
}
蜂鸣器、超声波学习
发表评论
536 views