版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
智能小車C語(yǔ)言程序控制秦磊
梁爽
主編第八章:智能小車綜合PWM控制
脈沖寬度調(diào)制(PWM)簡(jiǎn)稱脈寬調(diào)制,是利用微處理器的數(shù)字輸出來對(duì)模擬電路進(jìn)行控制的一種非常有效的技術(shù)。簡(jiǎn)單地講就是對(duì)輸出的脈沖寬度進(jìn)行控制。PWM有3個(gè)參數(shù),分別是頻率、占空比、周期。
Arduino開發(fā)板的3號(hào)、5號(hào)、6號(hào)、9號(hào)、10號(hào)、11號(hào)引腳可以輸出PWM信號(hào),控制智能小車前進(jìn)、后退、左轉(zhuǎn)和右轉(zhuǎn)。
要實(shí)現(xiàn)智能小車的前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)等相關(guān)功能,在編程時(shí)需要用到函數(shù)。本章將介紹函數(shù)的基礎(chǔ)知識(shí)。
下面先來看一個(gè)現(xiàn)實(shí)生活中飯店點(diǎn)餐的案例。前言
物聯(lián)網(wǎng)TheInternetOfThings
要求:在一個(gè)飯店里面,顧客負(fù)責(zé)點(diǎn)菜,服務(wù)員負(fù)責(zé)把菜名報(bào)給后勤人員,后勤人員負(fù)責(zé)洗菜,洗好后把菜交給配菜師傅,配菜師傅切好菜后把菜交給廚師,廚師負(fù)責(zé)炒菜,最后由服務(wù)員把菜端給顧客?!景咐龑?dǎo)入】
分析:在上面的案例中,服務(wù)員、后勤人員、配菜師傅、廚師分別負(fù)責(zé)各自指定的任務(wù)。如果把上面的工作過程看成一段程序,那么服務(wù)員相當(dāng)于主函數(shù),整個(gè)工作過程從他開始。后勤人員、配菜師傅、廚師相當(dāng)于三個(gè)不同的函數(shù),他們執(zhí)行各自的功能,互不影響。
函數(shù)有什么作用呢?(1)在一段代碼中,有功能相同的部分需要重復(fù)使用,只是中間所引用的數(shù)據(jù)不同。那么,可以將這部分代碼寫成一個(gè)函數(shù),在需要使用的時(shí)候調(diào)用。(2)方便代碼的維護(hù)。當(dāng)需要修改某個(gè)功能時(shí),只需要修改對(duì)應(yīng)部分的代碼。將上述案例中的洗菜、配菜、做菜分別寫成函數(shù),完成一個(gè)點(diǎn)單小程序,代碼如下:【案例導(dǎo)入】:案例源代碼行業(yè)PPT模板/hangye/【案例導(dǎo)入】:案例運(yùn)行結(jié)果行業(yè)PPT模板/hangye/
拓
展(1)函數(shù)是C語(yǔ)言的模塊,可以相互調(diào)用,有較強(qiáng)的獨(dú)立性。(2)函數(shù)是完成特定功能的語(yǔ)句集合,當(dāng)需要使用此功能時(shí),只需要調(diào)用對(duì)應(yīng)的函數(shù)。8.1PARTONE函數(shù)的定義和調(diào)用8.1.1函數(shù)的定義函數(shù)的定義包含函數(shù)頭和函數(shù)體。
函數(shù)頭指定了函數(shù)的名稱、返回值的類型,以及參數(shù)的類型和名稱(有參數(shù)的情況下)。函數(shù)體中的語(yǔ)句明確了該函數(shù)的具體功能。
函數(shù)定義的一般格式如下:8.1.1函數(shù)的定義注釋:(1)返回值類型可以是void或者任何對(duì)象類型,但不能是數(shù)組類型。函數(shù)返回值類型修飾符見表2-8-1。(2)函數(shù)名稱一般根據(jù)函數(shù)需要完成的功能來設(shè)置。例如,最大值函數(shù)為max(),最小值函數(shù)為min()。(3)參數(shù)聲明:函數(shù)若有多個(gè)參數(shù),需要以逗號(hào)分隔,每個(gè)參數(shù)前面要有一個(gè)類型修飾符。如果函數(shù)沒有參數(shù)需要傳入,則這個(gè)列表為空。(4)函數(shù)體中主要是聲明和執(zhí)行語(yǔ)句。8.1.2
函數(shù)的調(diào)用所謂函數(shù)調(diào)用(FunctionCall),就是使用已經(jīng)定義好的函數(shù)。函數(shù)調(diào)用的一般形式如下:functionName是函數(shù)名稱,param1,param2,param3,…是實(shí)參列表。實(shí)參可以是常數(shù)、變量、表達(dá)式等,多個(gè)實(shí)參之間用逗號(hào)分隔?!纠?-1-1】求一個(gè)圓柱體的表面積和體積行業(yè)PPT模板/hangye/【例8-1-1】求一個(gè)圓柱體的表面積和體積行業(yè)PPT模板/hangye/
小貼士
本例中自定義了函數(shù)voidcolumn(doubler,doubleh)。main()函數(shù)中的column(r,h)是對(duì)該函數(shù)進(jìn)行調(diào)用。其中:void為函數(shù)返回值類型。column為自定義函數(shù)名,該函數(shù)用來計(jì)算圓柱體的體積和表面積。doubler為函數(shù)參數(shù)一,代表圓柱體底面半徑,參數(shù)類型為double型。doubleh為函數(shù)參數(shù)二,代表圓柱體的高,參數(shù)類型為double型。程序運(yùn)行結(jié)果【例8-1-2】判斷一個(gè)數(shù)是不是質(zhì)數(shù)行業(yè)PPT模板/hangye/程序運(yùn)行結(jié)果【例8-1-2】判斷一個(gè)數(shù)是不是質(zhì)數(shù)行業(yè)PPT模板/hangye/
小貼士本例中自定義了函數(shù)intisPrime(inta)。其中:int表示函數(shù)返回值類型為整型。isPrime為自定義函數(shù)名,該函數(shù)用來判斷一個(gè)數(shù)是不是質(zhì)數(shù)。inta為函數(shù)參數(shù),此函數(shù)有一個(gè)整型參數(shù)a。
練一練
請(qǐng)編寫程序求一個(gè)長(zhǎng)方形的面積。8.2PARTTWO庫(kù)函數(shù)和自定義函數(shù)8.1.2
庫(kù)函數(shù)
C語(yǔ)言提供了豐富的庫(kù)函數(shù),如用于打印輸出的printf()和用于輸入的scanf(),以及與字符串有關(guān)的strlwr()、strlen()、strcat()等。
在使用某一庫(kù)函數(shù)時(shí),需要在程序中嵌入(#include<>)該函數(shù)所在的頭文件。例如,printf()、scanf()、getchar()、gets()、putchar()這些函數(shù)(也稱標(biāo)準(zhǔn)I/O函數(shù))都在stdio.h頭文件中,所以使用時(shí)要在代碼開頭寫上“#include<stdio.h>”。8.2.1
庫(kù)函數(shù)--數(shù)學(xué)函數(shù)【例8-2-1】求一個(gè)數(shù)的平方根行業(yè)PPT模板/hangye/程序運(yùn)行結(jié)果行業(yè)PPT模板/hangye/
小貼士
本例中使用了庫(kù)函數(shù)sqrt(floata)來計(jì)算a的平方根。練一練
請(qǐng)利用數(shù)學(xué)函數(shù)實(shí)現(xiàn)以下功能:輸入一個(gè)角的角度值,分別計(jì)算出這個(gè)角的正弦值和余弦值?!纠?-2-1】求一個(gè)數(shù)的平方根8.2.1
庫(kù)函數(shù)--字符串函數(shù)【例8-2-2】使用strspn()函數(shù)查找指定字符串出現(xiàn)的位置行業(yè)PPT模板/hangye/程序運(yùn)行結(jié)果行業(yè)PPT模板/hangye/
小貼士
本例中使用了字符串函數(shù)strspn(),該函數(shù)的返回值為字符串str開頭連續(xù)包含字符串string1和string2內(nèi)字符的數(shù)目。
對(duì)于字符串“Microsoft”,在字符串“Microsoftwasfirstdevelopedfor386/486-based”開頭連續(xù)出現(xiàn)了9個(gè)相同的字符,因此返回值為9。
對(duì)于字符串“was”,在字符串“Microsoftwasfirstdevelopedfor386/486-based”開頭未連續(xù)出現(xiàn)相同的字符,因此返回值為0。
練一練
請(qǐng)使用strcmp()函數(shù)對(duì)以下三個(gè)字符串進(jìn)行比較:str1="aaaa",str2="bbbb",str3="bcde"。輸出結(jié)果如圖2-8-6所示。
圖2-8-6輸出結(jié)果【例8-2-2】使用strspn()函數(shù)查找指定字符串出現(xiàn)的位置8.2.1
庫(kù)函數(shù)--時(shí)間日期函數(shù)【例8-2-3】使用時(shí)間函數(shù)輸出世界標(biāo)準(zhǔn)時(shí)間和北京時(shí)間行業(yè)PPT模板/hangye/程序運(yùn)行結(jié)果行業(yè)PPT模板/hangye/小貼士在標(biāo)準(zhǔn)C語(yǔ)言中,可通過tm結(jié)構(gòu)來獲得日期和時(shí)間,tm結(jié)構(gòu)在time.h中的定義如下:structtm{inttm_sec;
/*秒*/inttm_min;
/*分*/inttm_hour;
/*時(shí)*/inttm_mday;
/*一個(gè)月中的日期*/inttm_mon;
/*月份*/inttm_year;
/*年份*/inttm_wday;
/*星期*/inttm_yday;
/*從每年的1月1日開始的天數(shù)*/inttm_isdst;
/*夏令時(shí)標(biāo)識(shí)符*/
};通過time()函數(shù)來獲得日歷時(shí)間(CalendarTime),其原型如下:
time_ttime(time_t*timer);
8.2.2
自定義函數(shù)
自定義函數(shù)是用戶根據(jù)需要自行定義的函數(shù),用于實(shí)現(xiàn)特定的功能。自定義函數(shù)可以減少代碼量,使用時(shí)在主函數(shù)中調(diào)用即可。自定義函數(shù)在使用時(shí)不需要加頭文件。8.2.3
函數(shù)的分類函數(shù)按照是否有返回值可分為有返回值函數(shù)和無(wú)返回值函數(shù)兩種,按照是否有參數(shù)可分為有參數(shù)函數(shù)和無(wú)參數(shù)函數(shù)兩種。
綜合起來,可以把函數(shù)分為四種類型,見表2-8-5?!纠?-2-4】無(wú)參數(shù)無(wú)返回值函數(shù)舉例行業(yè)PPT模板/hangye/程序運(yùn)行結(jié)果1.無(wú)參數(shù)無(wú)返回值函數(shù)行業(yè)PPT模板/hangye/
小貼士本例中,Say()函數(shù)為用戶自定義函數(shù),無(wú)參數(shù),而且返回值為void,表示無(wú)返回值。在main()函數(shù)中調(diào)用Say()函數(shù)時(shí),不需要對(duì)其參數(shù)賦值?!纠?-2-5】打印一個(gè)菱形行業(yè)PPT模板/hangye/程序運(yùn)行結(jié)果2.有參數(shù)無(wú)返回值函數(shù)行業(yè)PPT模板/hangye/
小貼士本例中,diamond()為用戶自定義函數(shù),有兩個(gè)參數(shù)h(形參)和w(形參),分別代表輸出菱形的高和寬。本例中利用嵌套的for循環(huán),輸出了一個(gè)菱形。在main()函數(shù)中,程序?qū)⒂脩糨斎氲牧庑蔚母遖(實(shí)參)和寬b(實(shí)參)的值傳遞給diamond()函數(shù),完成菱形的繪制?!纠?-2-6】無(wú)參數(shù)有返回值函數(shù)舉例行業(yè)PPT模板/hangye/程序運(yùn)行結(jié)果3.無(wú)參數(shù)有返回值函數(shù)行業(yè)PPT模板/hangye/
小貼士
本例中,ret()為用戶自定義函數(shù),無(wú)參數(shù),但有返回值,返回值類型為int;在main()函數(shù)中調(diào)用ret()函數(shù)并判斷返回值是否為1,為1則輸出“返回值為1”,否則輸出“返回值為0”?!纠?-2-7】輸出兩數(shù)中的較大數(shù)并求和行業(yè)PPT模板/hangye/程序運(yùn)行結(jié)果4.有參數(shù)有返回值函數(shù)行業(yè)PPT模板/hangye/
小貼士本例中,自定義函數(shù)max()有兩個(gè)參數(shù),sum()有三個(gè)參數(shù),分別用來計(jì)算兩個(gè)參數(shù)中的較大數(shù)和三個(gè)參數(shù)的和。在主函數(shù)中,將用戶輸入的三個(gè)整數(shù)賦給max()和sum()中的參數(shù),然后求出兩個(gè)數(shù)中的較大數(shù)和三個(gè)數(shù)之和。
行業(yè)PPT模板/hangye/
練一練1.分別編寫兩個(gè)程序,計(jì)算從100加到200的和值。(1)定義一個(gè)無(wú)參數(shù)有返回值函數(shù)sum(),計(jì)算和值。(2)定義一個(gè)有參數(shù)有返回值函數(shù)sum(intbegin,intend),計(jì)算和值。顯示結(jié)果如圖2-8-12所示。
圖2-8-12顯示結(jié)果行業(yè)PPT模板/hangye/
練一練2.編寫一個(gè)無(wú)參數(shù)無(wú)返回值函數(shù)的示例程序,要求根據(jù)輸入的數(shù),輸出相應(yīng)的乘法口訣表。例如:輸入9,則輸出9×9乘法口訣表;輸入12,則輸出12×12乘法口訣表。顯示結(jié)果如圖2-8-13所示。圖2-8-13顯示結(jié)果8.3PARTTHREE函數(shù)的參數(shù)和返回值8.3.1函數(shù)的參數(shù)
定義函數(shù)的時(shí)候,大多數(shù)函數(shù)都有參數(shù)。函數(shù)定義時(shí)用的變量叫形參,傳遞給函數(shù)形參的值或變量叫實(shí)參注意:(1)定義函數(shù)時(shí)需要指定形參的數(shù)據(jù)類型。函數(shù)未被調(diào)用時(shí),形參并不占用內(nèi)存。只有在發(fā)生函數(shù)調(diào)用時(shí),形參才被分配內(nèi)存。函數(shù)調(diào)用完成后,形參所占的內(nèi)存就被釋放。形參出現(xiàn)在函數(shù)定義中,在整個(gè)函數(shù)體內(nèi)都可以使用,在函數(shù)之外則不能使用。(2)實(shí)參可以是變量、常量或者表達(dá)式。實(shí)參出現(xiàn)在主調(diào)函數(shù)中,進(jìn)入被調(diào)函數(shù)后,實(shí)參不能使用。(3)在C語(yǔ)言中發(fā)生函數(shù)調(diào)用時(shí),主調(diào)函數(shù)把實(shí)參的值傳送給被調(diào)函數(shù)的形參,從而實(shí)現(xiàn)主調(diào)函數(shù)向被調(diào)函數(shù)的數(shù)據(jù)傳送。實(shí)參與形參的數(shù)據(jù)傳遞是“值傳遞”,即單向傳遞,只由實(shí)參傳遞給形參,而不能由形參傳遞給實(shí)參。形參與實(shí)參的數(shù)據(jù)類型一定要兼容。行業(yè)PPT模板/hangye/
【例8-3-1】完成兩個(gè)數(shù)的互換程序運(yùn)行結(jié)果行業(yè)PPT模板/hangye/
【例8-3-2】ATM自動(dòng)取款機(jī)系統(tǒng)項(xiàng)目設(shè)計(jì)(企業(yè)項(xiàng)目)ATM自動(dòng)取款機(jī)系統(tǒng)是銀行業(yè)務(wù)流程中十分重要且必備的環(huán)節(jié)之一,在銀行業(yè)務(wù)流程中起著承上啟下的作用,其重要性不言而喻。但是,目前許多銀行在具體的一此業(yè)務(wù)流程處理過程中仍然使用手工操作的方式來實(shí)施,不僅費(fèi)時(shí)、費(fèi)力,效率低下,而且無(wú)法達(dá)到理想的效果。ATM設(shè)備擁有許多常見功能,如登錄系統(tǒng)、身份驗(yàn)證、余額查詢、取款、存款和修改密碼等功能。在設(shè)計(jì)的過程中也以此為依據(jù),每一種具體功能使用一個(gè)或幾個(gè)函數(shù)來實(shí)現(xiàn)。本案例定義的EnterAccount()函數(shù)用于用戶登入賬號(hào)的功能,使用此函數(shù)完成系統(tǒng)的主要功能1:ATM設(shè)備登錄界面的顯示功能。行業(yè)PPT模板/hangye/【例8-3-2】ATM自動(dòng)取款機(jī)系統(tǒng)項(xiàng)目設(shè)計(jì)(企業(yè)項(xiàng)目)程序運(yùn)行結(jié)果行業(yè)PPT模板/hangye/小貼士函數(shù)不僅能傳值,還能傳地址。傳值就是直接用一個(gè)變量存儲(chǔ)值。傳地址就是用一個(gè)變量(指針變量)存儲(chǔ)地址。本例中,如果函數(shù)定義寫成以下兩種形式,是無(wú)法完成數(shù)值交換的。函數(shù)定義1:voidswap(inta,intb){ inttemp; temp=a; a=b; b=temp;}函數(shù)定義2:voidswap(inta,intb){ int*temp; *temp=a; a=b; b=*temp;}8.3.2
函數(shù)的返回值返回值是函數(shù)的處理結(jié)果。如果需要在程序中利用某個(gè)函數(shù)的處理結(jié)果,則該函數(shù)必須設(shè)置有返回值。函數(shù)返回值一般用return語(yǔ)句設(shè)置。拓展(1)return語(yǔ)句是一個(gè)函數(shù)結(jié)束的標(biāo)志,只要執(zhí)行一次,這個(gè)函數(shù)就會(huì)結(jié)束運(yùn)行。(2)每個(gè)函數(shù)中可以有多條return語(yǔ)句。(3)return語(yǔ)句的返回值可以是任意數(shù)據(jù)類型。(4)return語(yǔ)句的返回值無(wú)個(gè)數(shù)限制,多個(gè)返回值之間用逗號(hào)分隔。8.3.2
函數(shù)的返回值練一練用自定義函數(shù)編程,要求輸入一個(gè)年份數(shù)值,判斷此年份是不是閏年。具體實(shí)現(xiàn)效果如圖2-8-17所示。
圖2-8-17實(shí)現(xiàn)效果閏年的條件如下(滿足其一即可):(1)此年份數(shù)值能整除4且不能整除100。(2)此年份數(shù)值能整除400。8.4PARTFOUR函數(shù)的嵌套調(diào)用和遞歸調(diào)用8.4.1函數(shù)的嵌套調(diào)用
在定義函數(shù)時(shí),一個(gè)函數(shù)內(nèi)不能再定義另一個(gè)函數(shù),即函數(shù)不能嵌套定義,但函數(shù)可以嵌套調(diào)用,即在調(diào)用一個(gè)函數(shù)的過程中,又調(diào)用另一個(gè)函數(shù)。函數(shù)嵌套調(diào)用示意圖如圖2-8-18所示。
圖2-8-18函數(shù)嵌套調(diào)用示意圖行業(yè)PPT模板/hangye/
【例8-4-1】通過函數(shù)嵌套調(diào)用求三個(gè)數(shù)中的最大值程序運(yùn)行結(jié)果小貼士本例中共定義了兩個(gè)函數(shù),max_two()函數(shù)用來求出兩個(gè)數(shù)中的較大值,max_three()函數(shù)中嵌套調(diào)用max_two()函數(shù),用來求出三個(gè)數(shù)中的最大值。8.4.2
函數(shù)的遞歸調(diào)用在調(diào)用一個(gè)函數(shù)的過程中又直接或間接地調(diào)用該函數(shù)本身,稱為函數(shù)的遞歸調(diào)用。函數(shù)遞歸調(diào)用需要注意以下幾點(diǎn):(1)在遞歸調(diào)用時(shí),函數(shù)本身既是主調(diào)函數(shù),又是被調(diào)函數(shù)。(2)在遞歸調(diào)用時(shí),遞歸函數(shù)將無(wú)休止地調(diào)用其自身,因此在函數(shù)內(nèi)必須有中止遞歸的條件語(yǔ)句,滿足某種條件之后即跳出遞歸函數(shù),不再繼續(xù)執(zhí)行。
行業(yè)PPT模板/hangye/
【例8-4-2】利用遞歸函數(shù)求出n!的值程序運(yùn)行結(jié)果小貼士本例中,函數(shù)factorial()用來求一個(gè)數(shù)的階乘,即從這個(gè)數(shù)開始一直乘到1,如5!=5×4×3×2×1。在函數(shù)定義中遞歸調(diào)用了函數(shù)factorial(n-1),使用if-elseif-else語(yǔ)句來進(jìn)行條件判斷,當(dāng)n遞減到n=1的時(shí)候,跳出遞歸函數(shù)。行業(yè)PPT模板/hangye/
練一練編寫一個(gè)嵌套調(diào)用函數(shù)的程序,要求用戶輸入一個(gè)十進(jìn)制數(shù),程序輸出對(duì)應(yīng)的二進(jìn)制數(shù),程序運(yùn)行結(jié)果如圖2-8-21所示。注意:將十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)的方法是除2求余數(shù)。圖2-8-21程序運(yùn)行結(jié)果8.5PARTFIVE常用Arduino函數(shù)8.5.1結(jié)構(gòu)函數(shù)1.voidsetup()主要功能:初始化變量、設(shè)置引腳模式、調(diào)用庫(kù)函數(shù)等。2.voidloop()主要功能:連續(xù)執(zhí)行函數(shù)內(nèi)的語(yǔ)句。
8.5.2
功能函數(shù)1.?dāng)?shù)字I/O函數(shù)(表2-8-6)
2.模擬I/O函數(shù)(表2-8-7)
8.5.2
功能函數(shù)3.時(shí)間函數(shù)(表2-8-8)
4.?dāng)?shù)學(xué)函數(shù)(表2-8-9)
8.5.2
功能函數(shù)5.串口通信函數(shù)(表2-8-10)
行業(yè)PPT模板/hangye/【例8-5-1】從串口輸入數(shù)據(jù)并打印出來程序運(yùn)行結(jié)果行業(yè)PPT模板/hangye/
小貼士本例中共使用了四個(gè)Arduino自帶的串口通信函數(shù)。(1)Serial.begin()為初始化波特率的函數(shù)。(2)Serial.println()為串口輸出函數(shù),用它代替?zhèn)鹘y(tǒng)C語(yǔ)言中的printf()函數(shù),因?yàn)锳rduino中使用“串口監(jiān)視器”來查看數(shù)據(jù)。(3)Serial.available()函數(shù)用來定義串口能承載的最大字符數(shù)。(4)Serial.read()函數(shù)用來讀取傳入串口的數(shù)據(jù)。行業(yè)PPT模板/hangye/【例8-5-2】用Arduino程序完成比較三個(gè)數(shù)的大小程序運(yùn)行結(jié)果行業(yè)PPT模板/hangye/
小貼士本例使用Arduino平臺(tái)進(jìn)行編程,與例8-4-1中定義的函數(shù)max_two()和max_three()的功能相同,但Arduino平臺(tái)中無(wú)main()函數(shù),它具有以下幾個(gè)特點(diǎn):(1)函數(shù)定義仍然在主函數(shù)體外。(2)Arduino中的setup()函數(shù)類似于基礎(chǔ)C語(yǔ)言中的main()函數(shù)。所有的功能語(yǔ)句必須寫在setup()函數(shù)中。練一練請(qǐng)將例8-4-2使用Arduino平臺(tái)重新編寫程序,并通過串口監(jiān)視器顯示數(shù)值互換的結(jié)果。8.6PARTSIX火焰報(bào)警案例1.所需硬件
火焰?zhèn)鞲衅鳎t外接收三極管)1個(gè)?;鹧?zhèn)鞲衅魅鐖D2-8-24所示。
蜂鳴器1個(gè)。蜂鳴器如圖2-8-25所示。
10k電阻1個(gè)。
面包板1塊。
面包板導(dǎo)線若干。
圖2-8-24火焰?zhèn)鞲衅鲌D2-8-25蜂鳴器
2.電路設(shè)計(jì)火焰?zhèn)鞲衅鞯亩桃_為負(fù)極,長(zhǎng)引腳為正極,將負(fù)極接到5V接口,正極與10k電阻一端相連,電阻另一端接到GND接口?;鹧?zhèn)鞲衅髡龢O通過導(dǎo)線接到Arduino開發(fā)板的5號(hào)模擬口。蜂鳴器的接法與火焰?zhèn)鞲衅黝愃疲澍Q器連接8號(hào)數(shù)字口。相關(guān)接線圖、原理圖和實(shí)物連接圖如圖2-8-26~圖2-8-28所示。
3.程序設(shè)計(jì)小貼士
在本案例中,火焰與傳感器之間的距離決定了讀取電壓值的大小。
用萬(wàn)用表測(cè)量電壓值發(fā)現(xiàn),當(dāng)沒有火焰靠近時(shí),模擬口讀到的電壓值在0.3V左右;當(dāng)有火焰靠近時(shí),讀到的電壓值在1.0V左右?;鹧婢嚯x越近,電壓值越大。
程序開始時(shí),先存儲(chǔ)沒有火焰時(shí)模擬口讀到的電壓值i,之后循環(huán)讀取模擬口電壓值j,并計(jì)算兩個(gè)值的差值k=j-i。
將k與0.6V做比較,當(dāng)其大于或等于0.6V時(shí),判斷有火焰,蜂鳴器鳴響報(bào)警;當(dāng)k小于0.6V時(shí),判斷沒有火焰,蜂鳴器不響。拓展
火焰?zhèn)鞲衅骼眉t外線對(duì)火焰非常敏感的特點(diǎn),使用特制的紅外線接收管來檢測(cè)火焰,然后把火焰的亮度轉(zhuǎn)化為電平信號(hào)輸入中央處理器,中央處理器根據(jù)信號(hào)的變化做出相應(yīng)的處理?;鹧?zhèn)鞲衅鞯奶攸c(diǎn)見表2-8-11。練一練
請(qǐng)使用Arduino自帶函數(shù)analogRead()、Serial.println()、pinMode()完成PWM控制LED的實(shí)驗(yàn)。通過pinMode()函數(shù)將11號(hào)數(shù)字口設(shè)置為輸出端口。通過analogRead()函數(shù)讀取傳感器的模擬值。通過Serial.println()函數(shù)輸出傳感器的變量數(shù)值。所需硬件:電位器模塊1個(gè)。紅色M3直插LED1個(gè)。1kΩ直插電阻1個(gè)。面包板1塊。面包板導(dǎo)線若干。8.7PARTSEVEN智能小車綜合PWM控制系統(tǒng)設(shè)計(jì)
本案例通過自定義前進(jìn)函數(shù)goAhead()、后退函數(shù)goBack()、左轉(zhuǎn)函數(shù)turnLeft()、右轉(zhuǎn)函數(shù)turnRight()和停止函數(shù)stop()來控制智能小車前進(jìn)、后退、轉(zhuǎn)向和停止。要求實(shí)現(xiàn)以下效果:智能小車啟動(dòng)后前進(jìn),1秒后后退,1秒后左轉(zhuǎn),1秒后右轉(zhuǎn),1秒后停止。1.所需硬件
準(zhǔn)備智能小車及相關(guān)硬件。2.電路設(shè)計(jì)
Arduino開發(fā)板的3號(hào)、5號(hào)、6號(hào)、9號(hào)、10號(hào)、11號(hào)引腳可以輸出PWM信號(hào),本案例使用3號(hào)、5號(hào)引腳。
PWM引腳為高電平時(shí)驅(qū)動(dòng)芯片導(dǎo)通。
【綜合案例】:智能小車綜合PWM控制系統(tǒng)設(shè)計(jì)3.程序設(shè)計(jì):使用Mixly軟件對(duì)上述函數(shù)進(jìn)行設(shè)計(jì)
【綜合案例】:智能小車綜合PWM控制系統(tǒng)設(shè)計(jì)4.代碼
【綜合案例】:智能小車綜合PWM控制系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)效果
【綜合案例】:智能小車綜合PWM控制系統(tǒng)設(shè)計(jì)(a)智能小車前進(jìn)(b)智能小車左轉(zhuǎn)(c)智能小車右轉(zhuǎn)本案例中使用的函數(shù)見表2-8-12
【綜合案例】:智能小車綜合PWM控制系統(tǒng)設(shè)計(jì)1.器材準(zhǔn)備(1)首先識(shí)讀電路,選擇所需的電路元件,記錄其型號(hào)、規(guī)格、數(shù)量。逐個(gè)檢驗(yàn)各個(gè)元件規(guī)格和質(zhì)量是否正確合格。填寫表2-8-13。(2)把檢測(cè)好的器材整齊地放在工作臺(tái)上,準(zhǔn)備下一步安裝接線。
8.7.1任務(wù)實(shí)施及效果2.
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 家庭用電課程設(shè)計(jì)
- 早教健康與安全課程設(shè)計(jì)
- 手工皮包制作課程設(shè)計(jì)
- 有機(jī)磨具制造課程設(shè)計(jì)
- 液壓開口機(jī)課程設(shè)計(jì)
- 板栗標(biāo)準(zhǔn)與法規(guī)課程設(shè)計(jì)
- 2025至2030年中國(guó)電纜熱縮封帽行業(yè)投資前景及策略咨詢研究報(bào)告
- 2024年珍珠瓷花瓶項(xiàng)目可行性研究報(bào)告
- 2025至2030年中國(guó)無(wú)紡布護(hù)士帽行業(yè)投資前景及策略咨詢研究報(bào)告
- 2024年壓力疲勞測(cè)試系統(tǒng)項(xiàng)目可行性研究報(bào)告
- 消防立管永臨結(jié)合施工方案
- 人教版八年級(jí)物理下冊(cè) 實(shí)驗(yàn)題02 壓力壓強(qiáng)實(shí)驗(yàn)(含答案詳解)
- 抖音快手短視頻創(chuàng)業(yè)項(xiàng)目融資商業(yè)策劃書
- 滬教版英語(yǔ)八年級(jí)上冊(cè)知識(shí)點(diǎn)歸納匯總
- 裝飾裝修工程售后服務(wù)具體措施
- 軟件設(shè)計(jì)說明書通用模板
- 酒店治安安全培訓(xùn)
- 糖皮質(zhì)激素類藥物臨床應(yīng)用指導(dǎo)原則(2023年)
- 我的家鄉(xiāng)-東營(yíng)
- 世界的海陸分布、世界的地形復(fù)習(xí)提綱
- SMT電子物料損耗率標(biāo)準(zhǔn) 貼片物料損耗標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論