用代码实现2、利用超声波模块侦测障碍物距离,若障碍物距离超过50cm让红色LED灯亮起,否则只让绿色LED灯亮起?
时间: 2024-03-24 14:40:32 浏览: 16
好的,下面是一个基于Arduino控制板和超声波模块的示例代码,可以实现您的要求。请将红色LED连接到控制板的数字引脚2,将绿色LED连接到数字引脚3,超声波模块连接到数字引脚4和5,其中数字引脚4用于发送超声波信号,数字引脚5用于接收超声波信号。
```
const int trigPin = 4;
const int echoPin = 5;
const int redLedPin = 2;
const int greenLedPin = 3;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(redLedPin, OUTPUT);
pinMode(greenLedPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
float distance = duration * 0.034 / 2;
Serial.print("Distance: ");
Serial.println(distance);
if (distance > 50) {
digitalWrite(redLedPin, HIGH);
digitalWrite(greenLedPin, LOW);
} else {
digitalWrite(redLedPin, LOW);
digitalWrite(greenLedPin, HIGH);
}
delay(500);
}
```
在这个代码中,我们使用了`pulseIn()`函数来测量超声波模块发送信号到接收信号的时间差,通过时间差计算出障碍物距离。然后,根据障碍物距离的大小,控制红色LED和绿色LED的亮灭状态。
另外,我们在`setup()`函数中初始化了引脚模式和串口通信。在`loop()`函数中,我们使用`delay()`函数来延迟500毫秒,以避免频繁读取超声波模块的数值。