# 超音波測距顯示
## 接線圖:

## 程式碼:
``` c =
#include<LCD_I2C.h> //引用LCD_I2C.h 函式庫
LCD_I2C lcd(0x27, 16, 2); //(顯示器行號/單行字數/行數)
int trigPin = 12; //Trig Pin 傳送超聲波
int echoPin = 11; //Echo Pin 接收超聲波
float duration, cm, inches;
void setup(){
Serial.begin (9600); // 通訊頻率設定
pinMode(trigPin, OUTPUT); // 定義輸入及輸出
pinMode(echoPin, INPUT);
lcd.begin();
for(int i = 0; i < 3; i++) {
lcd.backlight(); // 開啟背光
delay(250);
lcd.noBacklight(); // 關閉背光
delay(250);
}
lcd.backlight();
lcd.setCursor(0, 0); // 設定游標位置在第一行行首
delay(1000);
}
void loop(){
// 測距程式碼(勿動)
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH); // 給 Trig 高電位,持續 10 微秒
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
pinMode(echoPin, INPUT); // 讀取 echo 的電位
duration = pulseIn(echoPin, HIGH); // 收到高電位時的時間
cm = (duration/2) / 29.1; // 將時間換算成距離 cm 或 inch
inches = (duration/2) / 74;
delay(200);
if (duration) {
delay(100); // 等待一小段時間,確認資料都接收下來了
lcd.clear(); // 清除舊訊息
lcd.setCursor(0, 0); // 設定游標位置在第一行行首
lcd.print(inches);
lcd.setCursor(14, 0);
lcd.print("in");
lcd.setCursor(0, 1); // 設定游標位置在第二行行首
lcd.print(cm);
lcd.setCursor(14, 1);
lcd.print("cm");
delay(500);
}
}
```
## 進階
- [新增 KY-016 模組](/7EuWDUQOTIa_WkfXLzhVkg)