Arduion學習(二)超聲波感測器測距
阿新 • • 發佈:2020-11-28
一、實驗準備:
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 }
沒大膽嘗試怎知不可,未堅持到底如何放棄!