泊车传感器:灯光
本课属于 Coddy Arduino 学习旅程的“项目”单元。第 10 课,共 24 课。
停车时没人会看数字。三个 LED 会把距离转换成颜色:道路畅通时,点亮引脚 6 上的绿色 LED;即将接近时,点亮引脚 7 上的黄色 LED;必须停车时,点亮引脚 13 上的红色 LED。
有三个距离范围,每个范围恰好对应一个 LED。这里适合使用 if / else if / else 链,因为其中只有一个分支会运行:
if (cm >= 100) {
// 绿色
} else if (cm >= 30) {
// 黄色:30 到 99
} else {
// 红色:低于 30
}第二个测试不需要写成 cm < 100:else 表示第一个测试结果为假,因此距离已经小于 100。
和交通信号灯一样,先关闭全部三个 LED,再点亮其中一个。否则,红色 LED 亮起时,黄色 LED 还会保持点亮。
挑战
简单用颜色显示距离:
- 将引脚 6、7 和 13 设为输出
- 100 cm 或以上:只亮绿灯
- 30 到 99 cm:只亮黄灯
- 低于 30 cm:只亮红灯
继续打印距离。按“运行”,拖动传感器的距离,然后按“检查”。
亲手试试
// 距离传感器
const int trigPin = 9;
const int echoPin = 10;
// 发送一次测距脉冲,并返回以 cm 为单位的距离。
long readDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
return duration / 58;
}
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
long cm = readDistance();
Serial.println(cm);
delay(100);
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
项目中的所有课
自己练习: Arduino 在线编辑器