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; }