Menu
CoddyTech

泊车传感器:距离

本课属于 Coddy Arduino 学习旅程的“项目”单元。第 9 课,共 24 课。

汽车配有停车传感器,倒车靠近墙壁时,蜂鸣声会越来越快。这个项目将制作一个这样的装置:距离传感器、三盏警示灯、蜂鸣器和屏幕都已连接好。第一步是测量距离。

和“显示屏与传感器”单元中一样,在 TRIG 上发送一个持续 10 微秒的脉冲,就会发出一次探测信号;pulseIn(echoPin, HIGH) 会返回 ECHO 保持在 HIGH 状态的时长,单位是微秒。声音往返 1 厘米大约需要 58 微秒,因此距离(单位为厘米)就是这段时间除以 58(等同于 duration * 0.034 / 2)。把这些操作都放在一个函数里:

long readDistance() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  long duration = pulseIn(echoPin, HIGH);
  return duration / 58;
}

每秒测量大约 10 次:传感器在两次探测之间需要短暂休息,否则上一次探测的延迟回声可能会被当作这一次的回声。

challenge icon

挑战

简单

传感器的 TRIG 接在引脚 9 上,ECHO 接在引脚 10 上:

  • 编写 readDistance():触发脉冲、pulseIn(),以及将时间除以 58
  • 在 loop() 中,每隔 100 ms 用 Serial.println() 输出距离

按“运行”,拖动传感器上的距离,然后按“检查”。

亲手试试

// 距离传感器
const int trigPin = 9;
const int echoPin = 10;

// 发送一次脉冲,并返回以 cm 为单位的距离。
long readDistance() {

}

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.begin(9600);
}

void loop() {
  // 输出距离,然后等待 100 ms

}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

项目中的所有课

自己练习: Arduino 在线编辑器