泊车传感器:距离
本课属于 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 次:传感器在两次探测之间需要短暂休息,否则上一次探测的延迟回声可能会被当作这一次的回声。
挑战
简单传感器的 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
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
项目中的所有课
自己练习: Arduino 在线编辑器