Menu
CoddyTech

Thời gian hồi âm siêu âm

Thuộc phần Màn hình và cảm biến trong hành trình Arduino của Coddy. Bài học 18 trên 24.

HC-SR04 đo khoảng cách như dơi: cảm biến phát ra tiếng click quá cao để chúng ta nghe thấy rồi đo thời gian tiếng vang. Vật càng ở xa thì tiếng vang càng mất nhiều thời gian để quay lại.

Cảm biến có hai chân tín hiệu. Một xung HIGH ngắn trên TRIG báo cho cảm biến phát ra tiếng click. Sau đó, ECHO chuyển sang HIGH và giữ nguyên cho đến khi tiếng vang quay lại, vì vậy độ dài xung HIGH chính là thời gian âm thanh truyền đi.

delayMicroseconds() chờ theo phần triệu giây, đủ ngắn cho xung kích hoạt 10 micro giây. pulseIn(pin, HIGH) chờ chân chuyển sang HIGH và trả về số micro giây chân giữ ở mức HIGH. Nếu không có xung nào đến trong vòng một giây, hàm sẽ dừng chờ và trả về 0.

digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);     // xung kích hoạt
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);

Tiếng vang có thể kéo dài đến 38000 micro giây, vượt quá giới hạn của int, vì vậy hãy lưu giá trị này trong long.

challenge icon

Thử thách

Trung bình

TRIG nằm ở chân 9 và ECHO ở chân 10. Trong loop():

  • gửi xung HIGH dài 10 micro giây đến TRIG
  • đo tiếng vọng bằng pulseIn(echoPin, HIGH)
  • in thời gian bằng Serial.println()

Nhấn Chạy, di chuyển vật thể lại gần rồi ra xa trên bảng, sau đó nhấn Kiểm tra.

Tự làm thử

const int trigPin = 9;
const int echoPin = 10;

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

void loop() {
  // Gửi xung 10 micro giây qua TRIG
  // Đo thời gian tín hiệu phản hồi bằng pulseIn() rồi in ra
  delay(200);
}
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 Màn hình và cảm biến

Tự luyện tập: Playground Arduino