请写出arduino中用超声波传感器探测距离,如果检测到距离为15cm内则有源蜂鸣器鸣叫接着LED也一起闪烁,如果检测到距离大于15cm则有源蜂鸣器不鸣叫LED也不闪烁
时间: 2023-11-12 07:05:32 浏览: 84
arduino超声波测距
5星 · 资源好评率100%
好的,以下是实现代码:
```
const int trigPin = 9; // 超声波传感器引脚
const int echoPin = 10;
const int buzzerPin = 3; // 有源蜂鸣器引脚
const int ledPin = 2; // LED引脚
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); // 发送超声波
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH); // 接收反射超声波时长
int distance = duration * 0.034 / 2; // 距离计算
if (distance <= 15) { // 距离小于等于15cm
digitalWrite(buzzerPin, HIGH); // 鸣叫
digitalWrite(ledPin, HIGH); // 闪烁
delay(100);
digitalWrite(ledPin, LOW);
delay(100);
} else { // 距离大于15cm
digitalWrite(buzzerPin, LOW); // 不鸣叫
digitalWrite(ledPin, LOW); // 不闪烁
}
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
delay(500);
}
```
以上代码将超声波传感器连接到Arduino的9号引脚(trigPin)和10号引脚(echoPin),有源蜂鸣器连接到3号引脚(buzzerPin),LED连接到2号引脚(ledPin)。
在loop()函数中,我们先发送超声波并接收反射超声波的时长,计算出距离。如果距离小于等于15cm,则让有源蜂鸣器鸣叫,并让LED闪烁;如果距离大于15cm,则有源蜂鸣器不鸣叫,LED也不闪烁。同时,还会通过串口输出当前距离。最后加入了一个500ms的延时,以控制采样频率。
阅读全文