1. 程式人生 > 實用技巧 >Arduion學習(二)超聲波感測器測距

Arduion學習(二)超聲波感測器測距

一、實驗準備:
1、準備Arduion板(本次實驗所用到的型號為mega2560)、超聲波感測器HC-SR04、杜邦公母線
2、查閱相關資料,瞭解本次實驗所用到的引腳、介面的相關知識。

二、實驗操作:
1、將感測器的Vcc、Trig、Echo引腳用杜邦線分別與Arduion板上的數字IO介面5V、8、9相連,GND引腳連線Arduion上的GND介面。
2、將Arduion連上主機,開啟IDE,在工具選項卡中設定對應的開發板(本次選擇mega2560)和一個埠
3、驗證程式碼並上傳程式碼至Arduion

三、以下為我本次實驗的執行程式碼:

//#include <LiquidCrystal.h>

//#define LM35 A0
#define Trig 8 //引腳Tring 連線 IO D8
#define Echo 9 //引腳Echo 連線 IO D9
 
float cm; //距離變數

//LiquidCrystal lcd(12,11,5,4,3,2);      //構造一個LiquidCrystal的類成員。使用數字IO ,12,11,5,4,3,2

int val = 0;        //存放AD變數值
float temp = 0;     //存放溫度值的10倍

void setup()
{
  /*lcd.begin(16,2);    //初始化LCD1602
  lcd.print("Welcome to use!");   //液晶顯示Welcome to use!
  delay(1000);        //延時1000ms
  lcd.clear();        //液晶清屏
  */
  Serial.begin(9600);
  pinMode(Trig, OUTPUT);
  pinMode(Echo, INPUT);
}

void loop()
{
  //給Trig傳送一個低高低的短時間脈衝,觸發測距
  digitalWrite(Trig, LOW);       //給Trig傳送一個低電平
  delayMicroseconds(2);          //等待 2微妙
  digitalWrite(Trig,HIGH);       //給Trig傳送一個高電平
  delayMicroseconds(10);         //等待 10微妙
  digitalWrite(Trig, LOW);       //給Trig傳送一個低電平
  
  temp = float(pulseIn(Echo, HIGH)); //儲存回波等待時間,
  //pulseIn函式會等待引腳變為HIGH,開始計算時間,再等待變為LOW並停止計時
  //返回脈衝的長度
  //聲速是:340m/s 換算成 34000cm / 1000000μs => 34 / 1000
  //因為傳送到接收,實際是相同距離走了2回,所以要除以2
  //距離(釐米)  =  (回波時間 * (34 / 1000)) / 2
  //簡化後的計算公式為 (回波時間 * 17)/ 1000
  cm = (temp * 17 )/1000;         //把回波時間換算成cm
  
  //lcd.setCursor(0,0);           //設定液晶開始顯示的指標位置
  //lcd.print("Now Distance:");  //液晶顯示“LM35 temp =”
  //lcd.setCursor(0,1);           //設定液晶開始顯示的指標位置,在下一行顯示
  //lcd.print(cm);  //液晶顯示距離
  Serial.print("Now distance: ");
  Serial.println(cm);
  
  delay(1000);                    //延時1000ms
}

沒大膽嘗試怎知不可,未堅持到底如何放棄!