Menu
CoddyTech

Cảm biến đỗ xe: đèn

Thuộc phần Dự án trong hành trình Arduino của Coddy. Bài học 10 trên 24.

Không ai đọc các con số khi đang đỗ xe. Ba đèn LED biến khoảng cách thành màu sắc: màu xanh lá trên chân 6 khi đường còn thông thoáng, màu vàng trên chân 7 khi bạn đang đến gần, màu đỏ trên chân 13 khi bạn phải dừng lại.

Có ba khoảng cách và chính xác một đèn LED cho mỗi khoảng. Chuỗi if / else if / else phù hợp vì chỉ một nhánh của chuỗi được chạy:

if (cm >= 100) {
  // xanh lá
} else if (cm >= 30) {
  // vàng: từ 30 đến 99
} else {
  // đỏ: dưới 30
}

Phép kiểm tra thứ hai không cần ghi cm < 100: else có nghĩa là phép kiểm tra đầu tiên cho kết quả sai, vậy nên khoảng cách đã nhỏ hơn 100.

Tắt cả ba đèn LED trước khi bật một đèn, như với đèn giao thông. Nếu không, đèn vàng vẫn sáng khi đèn đỏ bật.

challenge icon

Thử thách

Dễ

Hiển thị khoảng cách bằng màu sắc:

  • đặt chân 6, 7 và 13 làm đầu ra
  • 100 cm trở lên: chỉ đèn xanh lá
  • từ 30 đến 99 cm: chỉ đèn vàng
  • dưới 30 cm: chỉ đèn đỏ

Tiếp tục in khoảng cách ra. Nhấn Chạy, kéo khoảng cách của cảm biến, rồi nhấn Kiểm tra.

Tự làm thử

// Cảm biến khoảng cách
const int trigPin = 9;
const int echoPin = 10;

// Gửi một xung siêu âm và trả về khoảng cách tính bằng 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 iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Dự án

Tự luyện tập: Playground Arduino