Cảm biến siêu âm SEN136B5B là sản phẩm của hãng Seeedstudio. Nó có khả năng đo khoảng cách của vật thể đặt phía trước trong khoảng từ 3cm đến 400cm. Nó phát ra một chuỗi xung âm thanh và đo âm phản hồi. Cảm biến này đơn giản, chỉ có 3 chân, 2 chân cấp nguồn và 1 chân tín hiệu. Trong ví dụ này, bo Arduino sẽ phát ra một xung ngắn và dò tín hiệu phản hồi. Quãng thời gian của xung phản hồi tương ứng với thời gian âm thanh đi và bật trở lại. Dựa trên thông tin về vận tốc âm thanh, ta sẽ tính được quãng đường.



- Chương trình ví dụ chỉ hiển thị giá trị trên máy tính.
- Ta có thể bổ sung lệnh bật tắt đèn hoặc điều khiển thiết bị khác dựa trên giá trị đọc được
/* Ping))) Sensor
This example code is in the public domain.
*/
// chân nối cảm biến
const int pingPin = 7;
void setup() {
// truyền thông với máy tính
Serial.begin(9600);
}
void loop() {
// biến thời gian, khoảng cách theo in và cm
// dùng biến long vì giá trị lớn, thay vì int
long duration, inches, cm;
// Tín hiệu PING tạo bởi xung cao trong ít nhất 2us
// cấp 1 xung thấp trước hết để xóa tín hiệu cũ
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin, LOW);
// tín hiệu trở về trên cùng 1 chân
pinMode(pingPin, INPUT);
// đo thời gian xung phản hồi
duration = pulseIn(pingPin, HIGH);
// chuyển sang khoảng cách bằng 2 hàm
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
// hiển thị trên máy tính
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
// chờ 100ms
delay(100);
}
long microsecondsToInches(long microseconds) {
// Theo Parallax, cần gần 74 us/in để âm thanh đi và về
// nên ta chia 2
// http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
return microseconds / 74 / 2;
}
long microsecondsToCentimeters(long microseconds) {
// Tốc độ âm thanh 340 m/s, cỡ 29 us/cm
return microseconds / 29 / 2;
}
