版權(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.
("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.
("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.
("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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 口腔設(shè)備組裝調(diào)試工安全宣貫知識考核試卷含答案
- 制球工安全技能測試水平考核試卷含答案
- 2025四川達(dá)州萬源市招聘社區(qū)專職工作者16人備考題庫附答案
- 2025年《職業(yè)能力傾向測驗(yàn)》常識判斷考核試題(各地真題)
- 涂料生產(chǎn)工操作能力考核試卷含答案
- 珍珠巖加工工測試驗(yàn)證考核試卷含答案
- 氣體分離工崗前班組安全考核試卷含答案
- 管廊運(yùn)維員QC管理模擬考核試卷含答案
- 墨錠制作工班組建設(shè)競賽考核試卷含答案
- 2024年湖北理工學(xué)院輔導(dǎo)員考試筆試真題匯編附答案
- 生物醫(yī)藥研發(fā)項(xiàng)目立項(xiàng)報告
- 2026年中國禮品行業(yè)展望白皮書
- 2025年度校長述職報告:守正中求變用心辦好這所“小而美”的學(xué)校
- 2025湖北省考申論縣鄉(xiāng)卷真題及答案
- 國內(nèi)外企業(yè)管理研究現(xiàn)狀的綜述
- 餐廳后廚述職報告
- 數(shù)字化工地培訓(xùn)
- 2025年七年級上學(xué)期期末數(shù)學(xué)試卷含答案(共四套)
- 監(jiān)控室值班操作流程標(biāo)準(zhǔn)化
- 2025年上海市事業(yè)單位招聘考試教師招聘體育學(xué)科專業(yè)知識試卷(綜合)
- 普貨運(yùn)輸安全培訓(xùn)內(nèi)容課件
評論
0/150
提交評論