超声波回波时间
本课属于 Coddy Arduino 学习旅程的“显示器与传感器”单元。第 18 课,共 24 课。
HC-SR04 测量距离的方式像蝙蝠:它会发出一种人耳听不到的短促声音,并测量回声所用的时间。物体越远,回声返回所需的时间就越长。
它有两个信号引脚。在 TRIG 上发送一个短暂的 HIGH 脉冲,就会让它发出声音。然后 ECHO 变为 HIGH,并一直保持 HIGH,直到回声返回,因此这个 HIGH 脉冲的持续时间就是声音传播所用的时间。
delayMicroseconds() 以百万分之一秒为单位等待,时间足够短,可以用于 10 微秒的触发脉冲。pulseIn(pin, HIGH) 会等待引脚变为 HIGH,并返回它保持 HIGH 的微秒数。如果 1 秒内没有收到脉冲,它就会停止等待并返回 0。
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10); // 触发脉冲
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);回声可能持续长达 38000 微秒,超过了 int 的存储范围,所以要用 long 保存它。
挑战
中等TRIG 接在引脚 9 上,ECHO 接在引脚 10 上。在 loop() 中:
- 在 TRIG 上发送一个持续 10 微秒的 HIGH 脉冲
- 使用
pulseIn(echoPin, HIGH)测量回波 - 使用
Serial.println()输出时间
按“开始”,在电路板上将物体移近或移远,然后按“检查”。
亲手试试
const int trigPin = 9;
const int echoPin = 10;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
// 在 TRIG 上发送一个持续 10 微秒的脉冲
// 用 pulseIn() 测量回波时间并打印出来
delay(200);
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
显示器与传感器中的所有课
自己练习: Arduino 在线编辑器