Arduino編程控制與應(yīng)用課件:完成倒車?yán)走_(dá)功能的實(shí)現(xiàn)_第1頁
Arduino編程控制與應(yīng)用課件:完成倒車?yán)走_(dá)功能的實(shí)現(xiàn)_第2頁
Arduino編程控制與應(yīng)用課件:完成倒車?yán)走_(dá)功能的實(shí)現(xiàn)_第3頁
Arduino編程控制與應(yīng)用課件:完成倒車?yán)走_(dá)功能的實(shí)現(xiàn)_第4頁
Arduino編程控制與應(yīng)用課件:完成倒車?yán)走_(dá)功能的實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Arduino

編程控制與應(yīng)用Arduino

智能控制的應(yīng)用完成倒車?yán)走_(dá)功能的實(shí)現(xiàn)同學(xué)們在乘坐汽車時是不是會經(jīng)歷倒車入庫這樣的環(huán)節(jié),在我們的生活中,倒車時一般車輛都會有雷達(dá)感應(yīng)裝置來輔助我們進(jìn)行倒車時的距離監(jiān)測。接下來我們可以利用Arduino

來實(shí)

現(xiàn)這一功能,今天我們將會自己動手來實(shí)現(xiàn)倒車?yán)走_(dá)。導(dǎo)入新授New

teaching一、倒車?yán)走_(dá)的基本知識三、超聲波聲波測距模塊的電路連接五、第三方庫的安裝二、超聲波測距的原理四、超聲波模塊工作原理六、液晶顯示屏七、1602液晶顯示模塊常用的控制函數(shù)八、蜂鳴器的使用九、蜂鳴器常用控制函數(shù)目

錄倒車?yán)走_(dá),或稱泊車輔助系統(tǒng)是一種安裝在汽車前、后保險杠上能在汽車泊車或者倒車時使用的安全輔助裝置

(如圖所示),它能夠使用聲音或者更為直觀的顯示告知

駕駛員周圍障礙物的情況,幫助駕駛員掃除視野死角和視

線模糊的缺陷,提高駕駛的安全性。(一)定義及作用一、倒車?yán)走_(dá)的基本知識倒車?yán)走_(dá)通常包含超聲波探頭、控制主機(jī)以及顯示提醒裝置等部件。超聲波探頭集成了超聲

波發(fā)射和接收探測功能,控制主機(jī)則將超聲波探頭采集信號進(jìn)行處理,轉(zhuǎn)換成距離信息,然后通

過顯示提醒裝置顯示距離信息或發(fā)出報警提示聲

音。泊車輔助系統(tǒng)部件組成如圖所示。(二)結(jié)構(gòu)及工作原理宣示提醒裝置控制主機(jī)超聲波探頭一、倒車?yán)走_(dá)的基本知識二

、超聲波測距的原理根據(jù)聲波的頻率范圍,聲波可分為次聲波、聲波和超聲波。其中20Hz~20kHz

的范圍內(nèi)時,可為人耳所感覺,稱為聲波;20Hz

以下的機(jī)械振動人耳聽不到,稱為次

聲波;頻率高于20kHz

的機(jī)械振動稱為超聲

。人類發(fā)聲頻率范圍(65~1100Hz)人類聽覺頻率范圍(約20~20000Hz)蝙蝠發(fā)聲頻率范圍(約10000~120000Hz)蝙蝠聽覺頻率范圍(約10000~120000Hz)海豚發(fā)聲頻率范圍(約7000~120000Hz)海豚聽覺頻率范圍(約150~150000Hz)超聲波在空氣中傳播速度為340m/s(0.034cm/μs),

控制板檢測到超聲波模塊ECHO

端子高電平的持續(xù)時間(超聲波來回時間)為t(μs),

則可以計算出超聲波模塊與障礙物之間的距離s=0.034×(t/2),

計算得到的距離

s單位是厘米(cm),

如圖所示。反射聲波超聲波倒車?yán)走_(dá)就是利用超聲波測距原理,測量出障礙物到車體的距離,并通過顯示屏來顯示倒車距離

。原聲波探頭與被測目標(biāo)的距離12發(fā)射/接收

探頭被測目標(biāo)SR04超聲波測距模塊有VCC、TRIG、ECHO、GND

共4個接線端子,其中VCC

接+5V

電源正極,GND

接電源負(fù)極,TRIG

是觸發(fā)信號

,ECHO

則是回聲信號輸出。本節(jié)案例中我們將VCC

、TRIG

、ECHO

、GND

這四個端子分別接入到5V、2

號數(shù)字管腳、3號數(shù)字管腳、GND,

連接完成后如圖所示。超聲波傳感器型號眾多,本書中我們介紹一個比較常用的超聲波測距模塊是“SR04”

。SR04

帶有1個超聲波發(fā)射探頭、1個超聲波接收探頭以及控制電路(如

圖所示),測量范圍約是2~400cm,

測量

精度可達(dá)3mm。接收探頭三、超聲波聲波測距模塊的電路連接如圖所示,當(dāng)控制板朝TRIG端子發(fā)送10微秒高電平信號后,模塊被觸發(fā),其發(fā)射探頭朝某一方向發(fā)射超聲波信號,發(fā)0射超聲波信號的同時開始計時。超聲波碰到障礙物后立即返回,接收探頭接收到被障礙物反射回來的信號后立即停止計時。ECHO

高電平的持續(xù)時間就是超聲波信號在空氣中的飛行時間。10微秒的高電平信號循環(huán)發(fā)出8個40KHz

的脈沖檢測高電平的持續(xù)時間四、超聲波模塊工作原理庫就是把一些函數(shù)封裝好,保存為獨(dú)立文件,使用時直接調(diào)用就行。Arduino

的庫通常包含標(biāo)準(zhǔn)庫和第三方庫。標(biāo)準(zhǔn)

庫在完成Arduino

IDE的安裝后就已經(jīng)自動導(dǎo)入,編

程時只需要直接調(diào)用就行。第三方庫則需要編程人員

自行導(dǎo)入。五、第三方庫的安裝與計算機(jī)上輸入字符一樣,在1602液晶顯示模塊上顯示字符時也有光標(biāo)。在控制輸出字符之前需要將光標(biāo)移動到所需要輸出字符的位置上,每輸出一個字符,光標(biāo)會自動跳到下一個輸出位置。1602液晶顯示模塊的行號和列號都是從“0”開始的,如圖所示,第一行的行號是row0,第一列的列號是column0。本任務(wù)中采用了可以顯示2行,每行16個字符的液晶顯示模塊,因此也稱1602

液晶顯示模塊,如圖所示。六、液晶顯示屏columnO

column152rowOrow11602液晶顯示模塊通常集成了字庫芯片,通過LiquidCrystal類庫提供的API,

可以很方便地被用來顯示英文字母和一些

符號。常見的1602液晶顯示模塊有16個接線端子,每個端子的符號及連接說明如表

5-

1-2所示。其中,3號端子V0

是液晶顯示屏對比

度的調(diào)整控制端子。該端子接到電源正極

時對比度最弱,顯示痕跡最淡;該端子若

接地時對比度最最高,但對比度過高時會

產(chǎn)生“鬼影”,同樣無法清晰看到顯示內(nèi)

容。所以該端子通常連接一個10KΩ的可調(diào)

電阻使用。端子編號符號說明端子編號符號說明1VSS顯示屏負(fù)極9D2數(shù)據(jù)總線2VDD顯示屏正極10D3數(shù)據(jù)總線3V0對比度控制11D4數(shù)據(jù)總線4RS指令/數(shù)據(jù)寄存器選擇12D5數(shù)據(jù)總線5RW數(shù)據(jù)寫入/讀取選擇13D6數(shù)據(jù)總線6E使能14D7數(shù)據(jù)總線7DO數(shù)據(jù)總線15A背景燈正極8D1數(shù)據(jù)總線16K背景燈負(fù)極4號端子RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。5號端子RW

為讀寫

信號選擇,高電平時進(jìn)行讀操作,低電平時進(jìn)行寫操作,本書示例中不涉及讀操作,所以一般都在程序初始化時將這個端子設(shè)為低電位。6號端子E

為使能端,當(dāng)E

端子由高電平跳變成低電平時,液晶模塊執(zhí)行命令。三、超聲波聲波測距模塊的電路連接211602液晶顯示模塊的控制涉及了7個端子,指令比較復(fù)雜。Arduino

很大的優(yōu)勢就是可以調(diào)用關(guān)聯(lián)庫的相應(yīng)函數(shù),并通過設(shè)置對應(yīng)參數(shù)實(shí)現(xiàn)復(fù)雜的功能控制。1602液晶顯示模塊使用到的函數(shù)庫文件名為"Liquid

Crystal",可以使用語句“#include<LiquidCrystal.h>”調(diào)用其中LiquidCrystal.h文件。該函數(shù)庫中常用的函數(shù)如下:功能:清除屏幕上的所有內(nèi)容,并將光標(biāo)定位到屏幕

左上角,即前面圖7-14中的row0

、column0

對應(yīng)的位置。

語法:Icd.clear(),這里的Icd

是指從LiquidCrystal

類庫

中創(chuàng)建的對象名稱。返回值:無。這是一個硬件初始化函數(shù),用于定義1602液晶顯示模塊中控制端子和數(shù)據(jù)總線端子與Arduino

控制板的連接情

況。(

)clear()

數(shù)七、1602液晶顯示模塊常用的控制函數(shù)(

)

LiquidCrystal()函

數(shù)功能:設(shè)置光標(biāo)位置。將光標(biāo)定位在指定位置,如setCursor(3,0)是指將光標(biāo)定位在第1排第4列。語法:

Icd.setCursor(col,row)。返回值:無。功能:設(shè)置顯示內(nèi)容的行列數(shù)。語法:Icd.begin(cols,rows),

其中cols指顯示模塊允許顯示內(nèi)

容的列數(shù);rows

指顯示模塊允許顯示內(nèi)容的行數(shù)。(

)setcursor()

函數(shù)(

)begin()

函數(shù)(

)print()

函數(shù)(

)home()

函數(shù)功能:將文本輸出到LCD

上。每輸出一個字符,光標(biāo)

就會向后移動一格。語法:Icd.print(data)。七、1602液晶顯示模塊常用的控制函數(shù)將光標(biāo)移動到左上角的位置(也即row0、column0對應(yīng)的位置),語法:

Icd.home()。無源他激型蜂鳴器的工作發(fā)聲原理是:方波信號輸入諧振裝置轉(zhuǎn)換為

聲音信號輸出,如圖所示。1諧振裝置2有源自激型蜂鳴器的工作發(fā)聲原理是:直流電源輸入經(jīng)過振蕩系統(tǒng)的放大、取樣電路后

,輸入諧振裝置轉(zhuǎn)換為聲音信號輸出,如圖所

示。蜂鳴器(如圖所示)的發(fā)聲原理由振動裝置和諧振裝置組成,而蜂鳴器又分為無源他激型與有源

自激型兩種。這兩種類型從外觀上不易區(qū)分。八、蜂鳴器的使用取樣電路放大電路諧振

裝置tone()

函數(shù)可以產(chǎn)生固定頻率的PWM

信號來驅(qū)動揚(yáng)聲器發(fā)聲。控制蜂鳴器的管腳、聲調(diào)(聲音的頻率)

和發(fā)聲時間長度都可以通過調(diào)整函數(shù)內(nèi)相關(guān)參數(shù)實(shí)現(xiàn)。

tone()

函數(shù)可以有兩種表達(dá)方式:

tone(pin,frequency,duration);tone(pin,frequency);no

Tone()函數(shù)用來停止tone()

函數(shù)發(fā)聲。no

Tone(pin)函數(shù)中的參數(shù)pin表示停止所對應(yīng)管腳

編號的tone()

函數(shù)發(fā)聲。(

)no

Tone()函

數(shù)(

)tone()

函數(shù)九、蜂鳴器常用控制函數(shù)任務(wù)實(shí)施Task

Implementation序號軟件及硬件名稱數(shù)量1Arduino

IDE2聯(lián)網(wǎng)的電腦1臺/人3鍵盤1個/人4鼠標(biāo)1個/人5Arduino

UNO開發(fā)板1塊/人6LCD1602顯示屏擴(kuò)展板1塊/人7USB串口線1根/人(一)軟件及硬件準(zhǔn)備一、任務(wù)準(zhǔn)備1.注意Arduino開發(fā)板與電腦的連接是否可靠;2.注意Arduino開發(fā)板與電腦連接端口的匹配;3.注意輸出電壓,避免開發(fā)板被燒壞;4.注意Arduino

開發(fā)板與LCD1602顯示屏擴(kuò)展板連接時,針腳要對孔,插入時要小心,避免陣腳變歪或折斷。一、任務(wù)準(zhǔn)備(二)場地設(shè)備準(zhǔn)備任務(wù)實(shí)施前需要做好場地防護(hù)準(zhǔn)備以及檢查實(shí)訓(xùn)場地和設(shè)備設(shè)施是否及存在安全隱患,如不正常請匯報老師并進(jìn)行處理方可實(shí)施任務(wù)。

(三)安全防護(hù)準(zhǔn)備1234二、實(shí)施步驟(一)認(rèn)識LCD1602

顯示屏擴(kuò)展板(1)尺寸:68.6*53.4mm(2)使用管腳:2、3、4、5、6、7、8、9、10、11、12、13(3)電阻數(shù)量:一個10kΩ可調(diào)電阻(4)LCD1602顯示屏數(shù)量:1個(復(fù)用4、5、6、7、8、9、10管腳)(5)超聲波傳感器:使用2、3管腳(6)蜂鳴器:使用11管腳(7)使用說明:LCD1602

顯示屏擴(kuò)展板使用超聲波傳感器檢測前方障礙物,經(jīng)過解算后將障礙物到傳感器的距離通過顯示屏展示出來,檢測范圍為20-500cm±10cm,

當(dāng)距離過小時,通過蜂鳴器報警,如此模擬汽車倒車的場景應(yīng)用。(8)電阻數(shù)量:一個10kΩ

可調(diào)電阻。二、實(shí)施步驟(一)認(rèn)識LCD1602顯示屏擴(kuò)展板LCD1602

顯示屏的使用4、5、6、11、12、13、14管腳分別接入UNO

板的4、5、6、7、8、9、10管腳,1、16接入GND,2

、15接入5V電源,管腳7、8、9、10空置。管腳3接入10kΩ

可調(diào)電阻。超聲波傳感器使用2、3管腳,蜂鳴器使用11管腳。將對應(yīng)的驅(qū)動程序通過軟件燒寫到UNO

板上通電即可使用該擴(kuò)展板。通過10kΩ可調(diào)電阻調(diào)整顯示屏

的亮暗程度。步驟1:連接線的方頭端接口連接ArduinoUNO開發(fā)板,另一端USB接口連接電腦。(二)控制電路連接二、實(shí)施步驟步驟2:LCD1602顯示屏擴(kuò)展板安裝在Arduino開發(fā)板上。二、實(shí)施步驟(二)控制電路連接二、實(shí)施步驟(三)控制程序編寫與上傳◎

sketchjun21a|Arduino

1.8.13

文件編情項(xiàng)目工具幫勛nm231

當(dāng)制編轆文檔名稱代碼編與區(qū)域上傳代碼此處編評的時候有進(jìn)度提示編譯結(jié)來堤示區(qū)域步驟1:打開Arduino

IDE軟件,進(jìn)入界面。步驟2:在工具-端口-選擇對應(yīng)的端口。若分不清端口,先把開發(fā)板連接上,查看端口,有COM1、COM3、COM4、COM5、COM6;斷開開發(fā)板連接,查看端口,有COM3、COM4、COM5、COM6;

少了一個COM10端口,那么COM10就是對應(yīng)的端口。(三)控制程序編寫與上傳302|Arduino

1.8.13工

助自動格式化項(xiàng)目存檔修正編碼并重新加載管理庫…串口監(jiān)視器串口繪圖器WiFi101/WiFiNINA

Firmware開發(fā)板:"Arduino

Uno'

口取得開發(fā)板信息編程器:"AVRISP

mkll"

燒錄引導(dǎo)程序102|Arduino

1.8.13工

幫助自動格式化項(xiàng)目存檔修正編碼并重新加載管理庫…串口監(jiān)視器串口繪圖器WiFi101/WifiNINAFirmware開發(fā)板:"Arduino

Uno°取得開發(fā)板信息編程器:"AVRISP

mkll"

燒錄引導(dǎo)程序Ctrl+TCtrl+Shift+lCtrl+Shift+MCtrl+Shift+LUpdaterCOM10COM3

COM4

COM5

COM6連接開發(fā)板斷開開發(fā)板二、實(shí)施步驟Ctrl+TCtrl+Shift+ICtrl+Shift+MUpdater串行端口COM3COM5COM6步驟1:新建一個文檔,//后的代碼可刪除;在【代碼編寫區(qū)域】下方輸入如圖所示代碼。sketch_704§1

#include

<LiquidCrystal

.h>//

引入1602LCD

顯示屏第三方庫2//定義顯示屏引腳號3

const

intrs=4,en=6,d4=7,d5=8,d6=9,d7=10;4Liquidcrystal

lcd(rs,en,d4,d5,d6,d7);//實(shí)例化一個顯示屏1cd

5//初始化函數(shù)void

setup

(){10

void

loop()(111

2(四)LCD

動態(tài)顯示任務(wù)效果:

LCD顯示屏向左流動顯示“Hello,inwinic!”。二

、實(shí)施步驟步驟2:分別在【代碼編寫區(qū)域】中的“voidsetup(){”

和“void

loop({”

下方輸入如圖所示

代碼

。sketch_704§1

#include

<Liquidcrystal

.h>//

引入1602LCD

顯示屏第三方庫2//定義顯示屏引腳號3

const

intrs=4,en=6,d4=7,d5=8,d6=9,d7=10;4Liquidcrystal

lcd(rs,en,d4,d5,d6,d7);//實(shí)例化一個顯示屏1cd

5//

初始化函數(shù)6void

setup(){pinMode

(5,OUTPUT);//將5號引腳設(shè)置為輸出模式digitalWrite

(5,

LOW);//將5號引腳設(shè)置為低電平lcd.

begin(16,2);//設(shè)置顯示屏的顯示大小10lcd.

print

("Hello,Inwinic!"

);//定義顯示的顯示內(nèi)容11delay

(1000);//延時1000ms

12}13

//loop循環(huán)函數(shù)14voidloop(){15lcd.scrollDisplayLeft();//把顯示的內(nèi)容向左滾動一格16

delay(500);//延時500ms|

17}(四)LCD動態(tài)顯示二、實(shí)施步驟步驟3:如圖所示單擊“上傳”按鈕,通過USB轉(zhuǎn)串口芯片將程序燒寫到開發(fā)板的主控芯片中◎

sketch

jul07a|Arduino

1.8.13文

項(xiàng)目

助sketchjul07aS

點(diǎn)擊上傳

#include<Liquidcrystal

.h>constint

rs=4,en=6,d4=7,d5=8,d6=9,d7=10;Liquidcrystal

1ed(rs,en,d4,d5,d6,d7);void

setup()(pinMode(5,OUTPUT);digita1Write(5,LOW);1cd.begin(16,2);led.print

("Hello,inwinic!");delay(1000);void

loop((led.scrollDisplayLeft

();delay(500);|(四)LCD動態(tài)顯示編譯完成。二、實(shí)施步驟步驟4:若操作順利,將出現(xiàn)“上傳成功”的提示,如圖所示,LCD1602

顯示屏擴(kuò)展板上出現(xiàn)

“Hello,inwinic!”的動態(tài)顯示循環(huán)。二、實(shí)施步驟(四)LCD動態(tài)顯示二

、實(shí)施步驟(

四)LCD

動態(tài)顯示步驟5:控制程序解析(1)首先引入1602LCD顯示屏第三方庫,接著定義顯示屏的管腳與arduino

UNO板管腳的對應(yīng)

關(guān)系,即rs—4、en—6、D4—7、D5—8、D6—9、D7—10。然后使用硬件初始化函數(shù)LiquidCrystal,采用四位數(shù)據(jù)線的連接方式(即D4—D7)創(chuàng)建一個LiquidCrystal的實(shí)例。(2)進(jìn)行初始化設(shè)置。第一步,將5號管腳設(shè)為輸出模式并設(shè)置為低電平(使液晶屏處于寫操作

狀態(tài));第二步,設(shè)置顯示屏的顯示區(qū)域的行列數(shù)為2行16列(即2行,每行16個字符);第三步,顯

示字符串內(nèi)容“Hello,Inwinic!”并延時1s。(

3

)

在loop函數(shù)中,利用Icd.scrollDisplayLeft

函數(shù)把顯示內(nèi)容向左滾動一格,并延時500ms

。

重新執(zhí)行l(wèi)oop函數(shù)刷新效果。#include<Liquidcrystal

.h

>//引入1602LCD

顯示屏第三方庫

//定義顯示屏引腳號const

int

rs

=4,en

=6,d4

=7,d5

=8,d6

=9,d7

=10;Liquidcrystal

lcd(rs,en,d4,d5,d6,d7);//實(shí)例化一個顯示屏1cd//初始化函數(shù)void

setup(){pinMode(5,

OUTPUT);//將5號引腳設(shè)置為輸出模式digitalWrite(5,

LOW);//將5號引腳設(shè)置為低電平lcd.begin

(16,2);

//設(shè)置顯示屏的顯示大小lcd.print

("Hello,Inwinic!

"

);//

定義顯示的顯示內(nèi)容delay

(1000);//延時1000ms//loop

循環(huán)函數(shù)void

loop(){lcd.scrollDisplayLeft

();//把顯示的內(nèi)容向左滾動一格delay

(500);//

延時500ms|引入1602LCD顯示屏第三方庫定義顯示屏引腳號實(shí)例化一個顯示屏

Icd將5號引腳配置為輸出模式,并將電平拉低設(shè)置顯示屏的顯示大小setup

函數(shù)定義顯示的顯示內(nèi)容延時1000ms把顯示的內(nèi)容向左滾動一格loop函數(shù)延時500ms(四

)LCD動態(tài)顯示二、實(shí)施步驟步驟1:新建一個文檔,//后的代碼可刪除;在【代碼編寫區(qū)域】下方輸入如圖所示代碼。sketch_703§1#include

<LiquidCrystal

.h>//引入1602LCD

顯示屏第三方庫2//

定義顯示屏引腳號3

constintrs=4,en=6,d4=7,d5=8,d6=9,d7=10;4

Liquidcrystal

lcd(rs,en,d4,d5,d6,d7);//

實(shí)例化一個顯示屏1cd

5//初始化函數(shù)6void

setup(){void

loop

(){1112(

)LCD靜態(tài)顯示任務(wù)效果:

LCD顯示屏靜態(tài)顯示“Hello,inwinic!”。二、實(shí)施步驟步驟2:分別在【代碼編寫區(qū)域】中的“voidsetup(){”

“void

loop(){”

下方輸入如圖所示

代碼

。void

setup

(){pinMode

(5,

OUTPUT

);//

將5號引腳設(shè)置為輸出模式

digitalwrite

(5

,LOW);//

將5號引腳設(shè)置為低電平

lcd.begin

(16,2);//

設(shè)置顯示屏的顯示大小10

lcd.

print

("Hello,Inwinic!

"

);/

/定義顯示的顯示內(nèi)容111213

void

loop(){14

lcd.setCursor(0,1)

;//移動光標(biāo)到特定位置15lcd.print(millis

()/1000);/

/顯示系統(tǒng)運(yùn)行的時間

16}(五

)LCD靜態(tài)顯示二、實(shí)施步驟步驟3:如圖所示單擊“上傳”按鈕,通過USB轉(zhuǎn)串口芯片將程序燒寫到開發(fā)板的主控芯片中。#include<LiquidCrystal

.h>const

int

rs=4,en

=6,d4=7,d5=8,d6=9,d7=10;Liquidcrystal

1cd(rs,en,d4,d5,d6,d7);voidsetup()(pinMode(5,

OUTPUT);digita1write(5,LOW);1ed.

begin(16,2);lcd.print

("Hello,Inwinic!"

);void

loop(){lcd.setcursor

(0,1);1ed.

print(millis

()/1000);|(

)LCD靜態(tài)顯示二、實(shí)施步驟◎sketchjul07a|Arduino

1.8.13文件編輯

項(xiàng)目

工具幫助點(diǎn)擊上傳sketch_jul07aS步驟4:若操作順利,將出現(xiàn)“上傳成功”的提示,如圖所示,LCD1602顯示屏擴(kuò)展板靜態(tài)顯示

“Hello,inwinic!”,顯示屏右下角的數(shù)字是累

計顯示的時間。(五

)LCD靜態(tài)顯示二、實(shí)施步驟二、實(shí)施步驟(五

)LCD靜態(tài)顯示步驟5:控制程序解析(1)首先引入1602LCD

顯示屏第三方庫,接著定義顯示屏的管腳與arduino

UNO板管腳的對應(yīng)

關(guān)系,即rs—4、en—6、D4—7、D5—8、D6—9、D7—10。

然后使用硬件初始化函數(shù)LiquidCrystal,采用四位數(shù)據(jù)線的連接方式(即D4—D7)創(chuàng)建一個LiquidCrystal的實(shí)例。(2)進(jìn)行初始化設(shè)置。第一步,將5號管腳設(shè)為輸出模式并設(shè)置為低電平(使液晶屏處于寫操作

狀態(tài));第二步,設(shè)置顯示屏的顯示區(qū)域的行列數(shù)為2行16列(即2行,每行16個字符);第三步,顯

示字符串內(nèi)容

“Hello,Inwinic!”。(

3

)

在loop函數(shù)中,利用Icd.setCursor函數(shù)把光標(biāo)移動到第2行第1列的位置,顯示系統(tǒng)運(yùn)行的

時間(單位為s)。#include<LiquidCrystal.h>//引入1602LCD顯示屏第三方庫//定義顯示屏引腳號const

int

rs

=4,en

=6,d4

=7,d5

=8,d6=9,d7

=10;LiquidCrystal

lcd(rs,en,d4,d5,d6,d7);//實(shí)例化一個顯示屏1cd//初始化函數(shù)void

setup

(){pinMode(5,

OUTPUT);//

將5號引腳設(shè)置為輸出模式digitalwrite

(5,

LOW

);//將5號引腳設(shè)置為低電平lcd.

begin(16,2);//

設(shè)置顯示屏的顯示大小lcd.

print

("Hello,Inwinic!"

);//定義顯示的顯示內(nèi)容void

loop(){1cd.setcursor

(0,1);//移動光標(biāo)到特定位置lcd.

print(millis

()/1000);//

顯示系統(tǒng)運(yùn)行的時間1602LCD顯示屏第三方庫定義顯示屏引腳號實(shí)例化一個顯示屏將5號引腳配宣為輸出模式,并將電平拉低設(shè)置顯示屏的顯示大小setup

函數(shù)

·定義顯示的顯示內(nèi)容延時1000ms移動光標(biāo)到特定位置loop

數(shù)顯示系統(tǒng)運(yùn)行的時間(

)LCD靜態(tài)顯示二、實(shí)施步驟步驟1:新建一個文檔,//后的代碼可刪除;在【代碼編寫區(qū)域】下方輸入如圖所示代碼。sketch_701§1//使用宏定義的方式定義

聲波的引腳為2、3#define

trigPin3

#define

echoE

3float

;//

定義一個浮點(diǎn)型變量來存儲最終結(jié)果float

temp

;//

定義一個浮點(diǎn)型變量來存儲計算過程數(shù)值

7//初始化函數(shù)8

void

setup

(){10}1

1

//loop循環(huán)函數(shù)1

2

void

loop(){

1

314}(六)超聲波測距二

、實(shí)施步驟步驟2:分別在【代碼編寫區(qū)域】中的“voidsetup(){”和

“void

loop(){”下方輸入如圖所示

代碼。7//

初始化函數(shù)8voidsetup(){Serial.begin

(9600);//定義串口波特率為960010

pinMode(trigPin,

OUTPUT);

//將trigPin

設(shè)置為輸出模式11

pinMode(echoPin,

INPUT

);//

將echoPin設(shè)置為輸入模式

1

213

//loop

循環(huán)函數(shù)14

void

loop(){1

5

digitalWrite(trigPin,

LOW);//將trigPin設(shè)置為低電平16

delayMicroseconds

(2);//延時2微秒17

digitalWrite(trigPin,HIGH

);//

將trigPin設(shè)置為高電平1

8

delayMicroseconds

(10);//延時10微秒1

9

digita1write(trigPin,

LOW);//

將trigPin設(shè)置為低電平

2021

temp

=float(

pulseIn(echoPin,

HIGH

));//

計算echoP:22

distance=(temp*

17)/1000;//

計算測量的距離

2324

Serial.print

(”

探頭與障礙物之間的距離=

"

);//在串口監(jiān)視25

Serial.print(distance);//在串口監(jiān)視器中打印距離26

Serial.println

("厘米");//在串口監(jiān)視器中打印“厘米”并換名27

delay

(1000);//

延時1000ms|(六)超聲波測距二、實(shí)施步驟步驟3:如圖所示單擊“上傳”按鈕,通過USB

轉(zhuǎn)串口芯片將程序燒寫到開發(fā)板的主控芯片中float

distance;//

存儲最終結(jié)果

float

temp;//存儲計算過程數(shù)值voidsetup(){Serial.begin

(9600);pinMode(trigPin,OUTPUT);pinMode(echoPin,

INPUT);voidloop(

(digitalWrite

(trigPin,LOW);

delayMicroseconds

(2);digita1write

(trigPin,HIGH);delayMieroseconds(10);digita1write

(trigPin,

LOW);(六)超聲波測距編譯完成。二、實(shí)施步驟sketchjul07a|Arduino1.8.13

文件編輯項(xiàng)目工具幫助sketch

julo7aS#define

trigPin#define

echoPin點(diǎn)擊上傳23步驟4:若操作順利,將出現(xiàn)“上傳成功”的提示,并打開串口監(jiān)視器,可監(jiān)視

到探頭與障礙物之間的距離?!?/p>

COM10一

□×發(fā)送探頭與障礙物之間的距離=11.95厘米人探頭與障礙物之間的距離=11.95厘米探頭與障礙物之間的距離=12.05厘米探頭與障礙物之間的距離=11.95厘米探頭與障礙物之間的距離=11.95厘米探頭與障礙物之間的距離=11.95厘米探頭與障礙物之間的距離=11.95厘米探頭與障礙物之間的距離=12.05厘米探頭與障礙物之間的距離=11.95厘米探頭與障礙物之間的距離=11.95厘米探頭與障礙物之間的距離=12.05厘米探頭與障礙物之間的距離=11.95厘米V?自動滾屏□Showtimestamp換行符

9600波特率清空輸出(六)超聲波測距二、實(shí)施步驟二

、實(shí)施步驟(六)超聲波測距步驟5:控制程序解析(1)首先使用宏定義#define

定義超聲波模塊管腳與arduino

UNO板管腳的對應(yīng)關(guān)系,即trig

一2、echo—3。

接著定義兩個浮點(diǎn)型變量,其中distance

用來存儲最終結(jié)果,temp

用來存儲計算過程

的中間值。(2)在初始化函數(shù)中設(shè)置串口通信波特率,將trigPin管腳定義為輸出模式,echoPin

管腳定義為

輸入模式。(

3

)

在loop

函數(shù)中,利用超聲波測距的原理測出超聲波傳遞的時間存儲在變量temp

中,并利用

公式計算其對應(yīng)的距離存儲在變量distance中,然后在串口監(jiān)視中打印出距離值及相應(yīng)的文字。使用宏定義的

方式定義超聲波的發(fā)射和接

收引腳定義一個浮點(diǎn)型變量distance來存儲最終結(jié)果定義一個浮點(diǎn)型變量temp來存儲計算過程數(shù)值定義串口波特

率為9600將

trigPin設(shè)置

為輸出模式將echoPin設(shè)

置為輸入模式讀取超聲波測

量值計算距離值將距離值打印在串口監(jiān)視器中delayMicroseconds(10);//

延時10微秒digita1write

(trigPin,LOW);//將trigPin設(shè)置為低電平temp=

float(pulseIn(echoPin,HIGH));//計算echoPin處于高電平的時長distance=(temp*17)

/1000;//

計算測量的距離Serial.print

("

探頭與障礙物之間的距離=");//在串口監(jiān)視器中打印”探頭與障礙物之間的距離="Serial.print(distance);//在串口監(jiān)視器中打印距離Serial.print1n("

厘米");//在串口監(jiān)視器中打印“厘米”并換行delay

(1000);//

延時1000ms//使用宏定義的方式定義超聲波的引腳為2、3#define

trigPin2#define

echoPin

3floatdistance;//定義一個浮點(diǎn)型變量來存儲最終結(jié)果floattemp;//定義一個浮點(diǎn)型變量來存儲計算過程數(shù)值

//初始化函數(shù)void

setup()(Serial.begin

(9600);//定義串口波特率為9600pinMode(trigPin,OUTPUT);//將trigPin設(shè)置為輸出模式

pinMode(echoPin,INPUT

);//

將echoPin設(shè)置為輸入模式//1oop

循環(huán)函數(shù)void

loop(){(六)超聲波測距digita1write(trigPin,

LOW);//

將trigPin

delayMicroseconds(2);

//

延時2微秒

digita1write(trigPin,HIGH);//將trigPin設(shè)置為低電平設(shè)置為高電平二、實(shí)施步驟setup

函數(shù)loop

函數(shù)步驟1:在文件夾中找到超聲波與庫文件中的“sketch_702”文件,并用ArduinoIDE

打開。sketch

70220213/18:46文件夫庫文件2021/3/318:52文件夾超聲波與庫文件共享

查看

復(fù)制路徑粘貼快捷方式剪貼板

組織(七)超聲波與庫文件↑

1

實(shí)訓(xùn)項(xiàng)目>實(shí)訓(xùn)27-美麗的'樂章”>超聲波與庫文件二、實(shí)施步驟名稱

修改日期類型大小新建項(xiàng)目·輕

問新建全部取消

反向選擇選擇重命名

新建

文件夾歷史記錄

打開固定到

復(fù)制

快速訪問搜索”超聲波與庫文件文件

主頁下

載文

檔步驟2:添加庫文件,先復(fù)制庫文件名稱“SRO4”,

點(diǎn)擊項(xiàng)目

加載庫

管理庫;搜索庫名稱找到相應(yīng)的庫文件點(diǎn)擊安裝。打開管理庫

添加庫類型全部

主題全部選擇順本AsyneSsnarbyLnisLlamasMore

infoby

Jereny

Lindsay

oJeremylindsayniMorsinfoCESartCaap

i

c

(

choPin,trigPin);long

distance;void

setup((Serial,begin

(9600);delay(1000);void

1oop()(distance=AAA.Distance();Serial.print

("

探頭與障礙物之間的距離=

"

);

Serial.print(distance);Serial.print1n("

厘米");e3RP(七)超聲波與庫文件復(fù)制庫名稱+↑二、實(shí)施步驟sketch_702#inelude

5R04.h

#definetrigPin2庫文件的名稱二

、實(shí)施步驟(七)超聲波與庫文件步驟3:若搜索不到相應(yīng)的庫文件,可以通過另一種方法來添加,打開庫文件復(fù)制“SRO4”

文件夾,下一步在電腦中找到并打開arduino

的文件夾,然后打開libraries

文件夾

“SR04”

粘貼進(jìn)去就完成了。復(fù)制

“SRO4”

庫文件移動到復(fù)制到找到arduino的文件夾打開庫文件添加庫文件二、實(shí)施步驟(七)超聲波與庫文件步驟1:新建一個文檔,//后的代碼可刪除;分別在【代碼編寫區(qū)域】的“void

setup(){”和

"void

loop(){“下方輸入如圖所示代碼。sketch_7051V/

初始化函數(shù)void

setup

(){pinMode

(

11,OUTPUT

);//

設(shè)置11號引腳為輸出模式5//loop

循環(huán)函數(shù)void

loop

(){digitalWrite

(11,LOW

);//

將11號引腳設(shè)置為低電平

delay

(300);//

延時300msdigitalwrite

(11,HIGH

);//將11號引腳設(shè)置為高電平1

0

delay

(1000);//延時1000ms,數(shù)值越小,聲音越急促

11}(八)蜂鳴器二、實(shí)施步驟步驟2:如圖所示單擊“上傳”按鈕,通過USB轉(zhuǎn)串口芯片將程序燒寫到開發(fā)板的主控芯片中(八)蜂鳴器voidsetup

()(pinMode

(11,

OUTPUT);void

1oop()目digita1Write

(11,LOW);delay(300);digita1Write

(11,HIGE);delay(1

000);//數(shù)值越小,聲音越急促編譯完成。二、實(shí)施步驟◎

sketchjul07a|Arduino1.8.13文件編輯項(xiàng)目工具幫助setch

julo7aS點(diǎn)擊上傳步驟3:若操作順利,將出現(xiàn)“上傳成功”的提示,上傳成功后,蜂鳴器會發(fā)出滴滴的聲音,響

0.3s停1s,

以此循環(huán)。(八)蜂鳴器二、實(shí)施步驟二、實(shí)施步驟(八)蜂鳴器步驟4:控制程序解析通過初始化函數(shù)將11號管腳定義為輸出模式。

在loop

函數(shù)中,設(shè)置11號管腳的電平的高低和延時的長短實(shí)現(xiàn)蜂鳴器發(fā)聲的調(diào)節(jié)。//初始化函數(shù)void

setup(){pinMode

(11,

OUTPUT);//

設(shè)置11號引腳為輸出模式//1oop

循環(huán)函數(shù)void

loop(){digita1write

(11,

LOW

);//

將11號引腳設(shè)置為低電平delay

(300);//

延時300msdigitalwrite

(11,HIGH

);//將11號引腳設(shè)置為高電平delay

(1000);//

延時1000ms,

數(shù)值越小,聲音越急促將11號引腳配置為輸出模式將11號引腳

的電平拉低延時300ms將11號引腳

的電平拉高延時1000mssetup

函數(shù)loop函

數(shù)sketch_706§

1

#include

<SR04

.h>/

/引入超聲波的庫文件2#include<Liquidcrystal.h>//引入顯示屏的庫文件3long

distance;/

/定義一個長整數(shù)型的變量4int

val;

//定義一個整數(shù)型變量5

const

int

trigPin=2,echoPin=3,buzzerPin

=11;//定義三個常量來定義超聲波

const

int

rs

=4,en

=6,d4

=7,d5

=8,d6

=9,d7

=10;

//定義顯示屏的

SR04

AAA

=SR04

(echoPin,trigPin);//實(shí)例化一個超聲波AAA8

Liquidcrystal

BBB(rs,en,d4,d5,d6,d7);//

實(shí)例化一個顯示屏BBB步驟1:新建一個文檔,//后的代碼可刪除;在【代碼編寫區(qū)域】的下方輸入如圖所示代碼。(九)泊車輔助系統(tǒng)二、實(shí)施步驟步驟2:分別在"void

setup(){”

“voidloop(){”下方輸入如圖所示代碼。sketch_706§8LiquidCrystalBBB(rs,en,d4,d5,d6,d7);

//實(shí)例化一個顯示屏BBB9//初始化函數(shù)10

voidsetup(){pinMode

(5,

OUTPUT

);//5

號引腳設(shè)置為輸出模式digitalwrite

(5,LOW);//5

號引腳俞出低電平1

3

BBB.

begin(16,2);//設(shè)置顯示的長和寬1

4

pinMode

(11,OUTPUT

);//11

號引腳設(shè)置為輸出模式

1516//1oop

循環(huán)函數(shù)17

void

loop()(delay

(100);//

延時100ms1

9

distance=AAA.Distance();//

將測量的距離保存在變量distance中20BBB.

setcursor(0,0);//將光標(biāo)移動到顯示屏的指定位置

BBB

.print("distance:");//

在顯示屏中打印"distance:"BBB.print(distance);

//顯示屏中顯示距離23BBB.print("cm"

);//顯示屏中顯示“cm”if(distance<=60){

//判斷距離是否小于或等于60,若條件成立則進(jìn)入循環(huán)if

(distance<=30){//判斷距離是否小于或等于30,若條件成立則進(jìn)入循環(huán)26

buzzerY();//調(diào)用buzzerY函數(shù)

2728

else{29

val=(distance-30)*20;//計算蜂鳴器響的頻率30buzzerX(val);//調(diào)用buzzerx

函數(shù)并傳入?yún)?shù)valelse{34

digita1write(buzzerPin,HIGH);//

蜂鳴器停止(九)泊車輔助系統(tǒng)二、實(shí)施步驟步驟3:最后在【代碼編寫區(qū)域】的下方輸入如圖所示代碼。sketch_706§36}37//自定義函數(shù),可傳入?yún)?shù)改變蜂鳴器響的頻率38void

buzzerX(int

delayTime){digitalWrite

(buzzerPin,LOW

);//蜂鳴器引腳設(shè)置為高電平

delay(200);//

延時200msdigitalWrite

(buzzerPin,HIGH

);/delay(delayTime);//

延時delayTime

43}44//自定義函數(shù),使蜂鳴器一直響45

void

buzzerY(){(九)泊車輔助系統(tǒng)digitalWrite

(buzzerPin,

LOW);//

蜂鳴器引腳設(shè)置為低電平

47}二、實(shí)施步驟/蜂鳴器引腳設(shè)置為低電平

ms

數(shù)值越小,聲音越急促步驟4:如圖所示單擊“上傳”按鈕,通過USB

轉(zhuǎn)串口芯片將程序燒寫到開發(fā)板的主控芯片中◎

sketchjul07a|Arduino

1.8.13文件

項(xiàng)

助Dsketchjulo7as≠include

<SRO4.h>#include

<Liquidcrystal

.h>long

distance;int

val;const

int

trigPin=2,echoPin=3,buzzerPin=11;const

int

rs=4,en

=6,d4

=7,d5

=8,d6=9,d7

=10;8R04AAA=8R04(echoPin,trigPin);Liquidcrystal

BBB(rs,en,d4,d5,d6,d7);void

stup((pinMode(5,OUTPUT);digita1write

(5,LOW);BBB.

begin(16,2);pinMode(11,OUTPUT);void

loop()「delay(100);(九)泊車輔助系統(tǒng)編譯完成。二、實(shí)施步驟點(diǎn)擊上傳步驟5:若操作順利,將出現(xiàn)“上傳成功”的提示,如圖所示,LCD1602

顯示屏擴(kuò)展板顯示“distance:134cm”,其距離為探頭與障礙物之間的距離,由超聲波發(fā)出信號和接收信號反饋出來

,當(dāng)距離過近時蜂鳴器會發(fā)出蜂鳴。(九)泊車輔助系統(tǒng)二、實(shí)施步驟distance:134Cm步驟6:控制程序解析(1)首先引入超聲波和1602LCD

顯示屏第三方庫,接著定義一個長整型變量distance用來存儲超聲波所測距離的最終結(jié)果,

定義一個整型變量val用來存儲計算得到(決定蜂鳴器發(fā)聲頻率)的值。(2)利用整型常量定義超聲波、蜂鳴器、顯示屏的管腳與arduino

UNO板管腳的對應(yīng)關(guān)系,超聲波為:tigPin—2、

echoPin—3,蜂鳴器為:buzzerPin—11,顯示屏為:rs—4

、en—6

、D4—7

、D5—8

、D6—9

、D7—10。(3)使用超聲波和液晶顯示屏函數(shù)創(chuàng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論