2016年11月18日 星期五

老皮講堂-如何藉由超聲波模組(HC-SR04)來偵測距離

       大家好! 今天主要來簡單介紹一下, 怎麼透過Arduino板子及超聲波模組(HC-SR04)來偵測距離並能在1602LCD屏幕上顯示.

       關於超聲波模組(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);

}

影片紀錄(延伸應用設計):


沒有留言:

張貼留言