關於超聲波模組(HC-SR04), 請參考以下照片. 至於工作原理, 可在網路上搜尋關鍵字, 即可參考得知, 在此不多作描述.
主要Spec => 量測範圍 : 2~450cm, 精度 : 3mm, 有效量測角度: <15度.
另外, 這邊比較特別的是想要把偵測到的距離, 顯示在一個簡單的1602 LCD屏幕, 此處選用的是1602 藍屏 LCM含I2C TWI轉接板.
以下是整體的接線圖, 其中HC-SR04 & 1602 LCD都吃5V的電. 1602 LCD的SDA接在類比A04端口, SCL則皆在A05端口. 1602 LCD的TrigPIN則接在數字2端口, EchoPIN則接在數字3端口.
以下是程序碼, 提供參考!
=======================================================================
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // LCD接腳定義
const int TrigPin = 2;
const int EchoPin = 3;
float cm;
void setup()
{
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
lcd.begin();
for (int i = 0; i < 2; i++) { //閃2次
lcd.backlight(); // 開啟背光
delay(250);
lcd.noBacklight(); // 關閉背光
delay(250);
}
lcd.backlight(); // 開啟背光
}
void loop()
{
lcd.clear();
lcd.setCursor(1, 0); //(第1格,第0行),設定游標位置在第一行第2格
lcd.print("DIS=");
digitalWrite(TrigPin, LOW); //低高低電平發一個短時間脈衝去TrigPin
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
cm = pulseIn(EchoPin, HIGH) / 58.0; //將回波時間換算成cm
cm = (int(cm * 100.0)) / 100.0; //保留兩位小數
Serial.println("sc;");
Serial.println("sd0,0;");
Serial.println("ssHC-SR04:;");
Serial.println("sd0,8;");
Serial.print("ss");
Serial.print(cm);
Serial.println(";");
Serial.println("ssCM;");
lcd.setCursor(5, 0);
lcd.print(cm);
lcd.print(" cm");
delay(3000);
}
影片紀錄(延伸應用設計):
沒有留言:
張貼留言