Menu
CoddyTech

Đổi thời gian hồi âm sang centimet

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 19 trên 24.

Âm thanh truyền được khoảng 0.034 centimet trong mỗi micro giây. Nhân thời gian tiếng vọng với con số đó, bạn sẽ biết âm thanh đã truyền đi bao xa.

Nhưng âm thanh truyền đến vật thể rồi quay lại, vì vậy vật thể chỉ cách bạn bằng một nửa khoảng cách đó:

float cm = duration * 0.034 / 2;

Ở khoảng cách 1 mét, tiếng vọng mất khoảng 5800 micro giây: 5800 nhân với 0.034 bằng 197 cm cả đi lẫn về, vậy vật thể cách 98.6 cm. Viết 0.034 với dấu thập phân: khi đó tổng vẫn giữ phần thập phân.

Hãy dự trù sai số khoảng một hoặc hai centimet: nhiệt độ không khí làm thay đổi tốc độ âm thanh, và cảm biến này đo hơi thiếu.

challenge icon

Thử thách

Dễ

Đoạn code in ra thời gian phản hồi. Thay vào đó, hãy in ra khoảng cách:

  • đổi thời gian sang centimet: nhân với 0.034, rồi chia cho 2
  • in ra khoảng cách tính bằng centimet thay vì thời gian

Nhấn Chạy, di chuyển vật thể, rồi 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() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  long duration = pulseIn(echoPin, HIGH);
  // chuyển thời gian phản hồi của tín hiệu siêu âm sang xăng-ti-mét rồi in ra
  Serial.println(duration);
  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