Menu
CoddyTech

泊车传感器:灯光

本课属于 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 还会保持点亮。

challenge icon

挑战

简单

用颜色显示距离:

  • 将引脚 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);
}
quiz icon自我测试

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

项目中的所有课

自己练习: Arduino 在线编辑器