張向紅 朱桂榮
開源硬件項(xiàng)目設(shè)計(jì)是新課標(biāo)中選擇性必修模塊6中的內(nèi)容,Arduino開源硬件設(shè)計(jì)是高中信息技術(shù)的校本課程?!坝肁rduino實(shí)現(xiàn)紅綠燈系統(tǒng)”需要三節(jié)課完成,第一節(jié)內(nèi)容為:認(rèn)識(shí)Arduino的接口,認(rèn)識(shí)Arduino的編程軟件界面,學(xué)會(huì)把程序編譯并上傳到Arduino上,利用Arduino的5V輸出口、接地口、電阻、發(fā)光二極管、面包板完成一個(gè)使發(fā)光二極管亮的硬件連接。第二節(jié)內(nèi)容為:完成紅綠燈系統(tǒng)的硬件連接并用軟件實(shí)現(xiàn)紅綠燈系統(tǒng)的自動(dòng)控制。第三節(jié)內(nèi)容為:完善、優(yōu)化紅綠燈系統(tǒng)和學(xué)生展示紅綠燈系統(tǒng)。本節(jié)課為第二節(jié)課。
本次課的授課對(duì)象是高一年級(jí)的學(xué)生,通過第一節(jié)課的學(xué)習(xí),學(xué)生已經(jīng)對(duì)Arduino的接口有一定的認(rèn)識(shí),已經(jīng)可以利用Arduino的5V輸出口和接地口完成一個(gè)使燈亮的硬件連接;對(duì)Arduino的編程軟件界面有了一定的認(rèn)識(shí),且知道編譯程序并把程序上傳到Arduino上;知道現(xiàn)實(shí)生活中十字路口的紅綠燈是如何工作的。
● 導(dǎo)入新課,呈現(xiàn)任務(wù)
1.情境導(dǎo)入
師:過十字路口時(shí)我們都需要遵循紅綠燈,通過上節(jié)課的學(xué)習(xí)我們已經(jīng)知道紅綠燈系統(tǒng)是怎么工作的了,這節(jié)課我們就來搭建一個(gè)紅綠燈系統(tǒng)。
2.呈現(xiàn)任務(wù)
師:紅綠燈系統(tǒng)就是對(duì)紅燈、綠燈、黃燈進(jìn)行自動(dòng)控制,我們首先完成對(duì)一個(gè)燈進(jìn)行自動(dòng)控制,以綠燈為例,這里我們使用綠色發(fā)光二極管代替(由此引出第一個(gè)任務(wù):用程序控制綠燈的亮和滅)。
設(shè)計(jì)意圖:十字路口的紅綠燈系統(tǒng)是學(xué)生比較熟悉的,每個(gè)學(xué)生都知道紅綠燈是如何工作的,通過解決生活中常見的實(shí)際問題,激發(fā)學(xué)生的學(xué)習(xí)興趣,培養(yǎng)學(xué)生的問題解決意識(shí)。
● 完成任務(wù),探究新知
任務(wù)一:用程序控制綠燈的亮和滅
師:第一節(jié)課我們已經(jīng)學(xué)過利用Arduino的5V輸出口和接地口搭建一個(gè)使綠燈亮、使發(fā)光二極管亮的硬件連接,在這個(gè)電路中為什么綠燈是一直亮的?
生:因?yàn)锳rduino的5V輸出口一直輸出5V電壓,所以綠燈一直亮著。
師:在這個(gè)硬件連接中,我們會(huì)不會(huì)用程序控制綠燈?
生:不會(huì)。
師:要用程序控制綠燈就需要把綠燈的正極接到Arduino的數(shù)字輸出口上(2到13口都可以),我們以2口為例,按照如圖1所示的電路圖完成硬件連接。
學(xué)生按照電路圖完成硬件連接,并思考要使綠燈亮應(yīng)該給Arduino的數(shù)字輸出口2輸出幾伏電壓?
師:硬件連接完后,要使綠燈亮,需要給Arduino的數(shù)字輸出口2輸出幾伏電壓?
生:5V。
師:在編程軟件中,___________________指令即是把數(shù)字輸出0的輸出電壓設(shè)為5V。因此我們用該指令(把數(shù)字輸出管腳設(shè)置為2)就可以控制綠燈亮(示范用該指令控制小燈亮)。要使綠燈滅,只需把該指令中的高設(shè)置為低即可(把數(shù)字輸出0的輸出電壓設(shè)為0)。
學(xué)生完成該指令控制綠燈的亮和滅。
師:我們學(xué)會(huì)了用指令控制綠燈的亮和滅,那么怎么實(shí)現(xiàn)綠燈的閃爍效果?
學(xué)生嘗試實(shí)現(xiàn)綠燈的閃爍效果。
師:通過觀察,同學(xué)們用的指令是______________,但是上傳到Arduino上綠燈都是亮的狀態(tài),為什么?這是因?yàn)樵贏rduino上程序順著第一條往下執(zhí)行,到最后一條執(zhí)行完畢后立馬又回到第一條開始執(zhí)行,如此重復(fù)。所以綠燈亮了以后滅了立馬又亮了,肉眼無法看出閃爍效果,要實(shí)現(xiàn)閃爍效果就需要在指令后面加一條延時(shí)指令 ,大家試試加入延時(shí)指令后能不能實(shí)現(xiàn)閃爍效果。
學(xué)生完成指令并上傳指令,觀察綠燈效果(學(xué)生完成的指令如圖2所示)。
師:觀察程序及綠燈閃爍效果,看綠燈多長時(shí)間完成一次閃爍?
生:2秒。
師:那么我們?cè)趺锤拈W爍頻率,使綠燈1秒完成一次閃爍?
生:只需要把延時(shí)指令中的1000改為500即可。
學(xué)生更改指令使綠燈1秒完成一次閃爍。
任務(wù)二:程序控制綠燈亮20秒,然后閃爍10次
師:我們已經(jīng)完成了第一個(gè)任務(wù),接著我們需要完成第二個(gè)任務(wù):用程序控制綠燈亮20秒,然后閃爍10次。
學(xué)生嘗試完成任務(wù)二。
師:通過觀察,大部分同學(xué)完成的指令都如圖3所示,我們分析下這組指令,首先綠燈亮20秒,然后閃爍1次,然后又重復(fù)綠燈亮20秒,閃爍1次,而我們需要的是閃爍10次,因此需要把閃爍指令執(zhí)行10次,怎么辦?
生:把閃爍指令復(fù)制9遍最終得到10次閃爍指令。
師:(給出包含有10條閃爍指令的指令)我們發(fā)現(xiàn)這個(gè)指令好長,能不能優(yōu)化一下這個(gè)指令?這里我們可以使用 ,該指令是這樣工作的:i從1開始執(zhí)行該指令中的內(nèi)容,執(zhí)行完后加步長值“1”為2,又執(zhí)行一次該指令中的內(nèi)容,執(zhí)行完畢后又加步長值“1”為3,又執(zhí)行一次該指令中的內(nèi)容,直到i的值為10執(zhí)行完該指令中的內(nèi)容后結(jié)束,因此i為1執(zhí)行一次,i為2執(zhí)行一次,i為3執(zhí)行一次,一直到i為10執(zhí)行一次后結(jié)束,總共執(zhí)行了10次。因此我們只需要把閃爍指令放到該指令中即可實(shí)現(xiàn)執(zhí)行10次的效果。最終得到如圖4所示的指令。
學(xué)生完成該指令并上傳到Arduino上,觀察綠燈效果。
師:(觀察學(xué)生完成狀況,適時(shí)提出問題)要是綠燈閃爍5次該怎么修改指令?
學(xué)生思考并嘗試修改指令,然后回答問題。有些學(xué)生回答的是把指令中的1改為5;有些學(xué)生回答的是把指令中的10改為5;有些學(xué)生回答的是把步長改為2;等等。
師:大家的這些改法都可以實(shí)現(xiàn)綠燈閃爍5次的效果。
設(shè)計(jì)意圖:通過控制綠燈的亮和滅,再到綠燈的閃爍,完成后再實(shí)現(xiàn)程序控制綠燈亮20秒,然后閃爍10次,任務(wù)層層遞進(jìn),符合學(xué)生的認(rèn)知規(guī)律,培養(yǎng)學(xué)生發(fā)現(xiàn)問題、分析問題、解決問題的能力。
● 學(xué)以致用,鞏固知識(shí)
任務(wù)三:程序控制綠燈亮20秒,然后閃爍10次,然后黃燈亮3秒
師:通過前面的學(xué)習(xí),這個(gè)任務(wù)大家已經(jīng)可以自己完成,老師在這個(gè)任務(wù)中增加了黃燈,因此得先完成黃燈的硬件連接(把如圖5所示的硬件連接電路圖發(fā)給學(xué)生,讓學(xué)生先完成硬件連接,然后完成程序并上傳,最后實(shí)現(xiàn)“綠燈亮20秒,然后閃爍10次,然后黃燈亮3秒”的效果,其間對(duì)學(xué)生存在的問題進(jìn)行講解)。
學(xué)生完成硬件連接,完成程序,上傳到Arduino查看效果,學(xué)生基本都能完成這個(gè)任務(wù)。
師:我們都已經(jīng)完成這個(gè)任務(wù)了,緊接著完成第四個(gè)任務(wù)。
任務(wù)四:程序控制綠燈亮20秒,然后閃爍10次,然后黃燈亮3秒,然后紅燈亮25秒,然后閃爍5次
師:通過前三個(gè)任務(wù)的學(xué)習(xí),大家對(duì)常見的指令已有所了解,接下來兩人一個(gè)小組合作完成任務(wù)四。
學(xué)生完成任務(wù)四,完成的硬件連接及程序如圖6所示。
設(shè)計(jì)意圖:通過任務(wù)三和任務(wù)四,讓學(xué)生動(dòng)手實(shí)踐,鞏固所學(xué)知識(shí),培養(yǎng)學(xué)生的問題解決能力。通過獨(dú)立操作和小組互助完成硬件連接和程序編寫,培養(yǎng)學(xué)生在問題解決過程中的獨(dú)立思考能力和團(tuán)隊(duì)協(xié)作能力。
● 總結(jié)知識(shí),課后延伸
師:我們分析一下最后的程序,首先綠燈亮20秒,然后閃爍10次,然后黃燈亮3秒,然后紅燈亮25秒,然后閃爍5次,結(jié)束后又回到開始綠燈亮20秒,如此重復(fù)執(zhí)行,這就是紅綠燈系統(tǒng)的工作模式,通過觀察程序及硬件效果我們知道程序是順著第一條順序往下執(zhí)行的,當(dāng)執(zhí)行到最后結(jié)束后又返回第一條重復(fù)執(zhí)行,在程序中當(dāng)需要對(duì)某部分指令執(zhí)行多次時(shí)就需要用到循環(huán)指令 ,除了循環(huán)指令外,今天我們還學(xué)習(xí)了、這兩條指令,這就是我們這節(jié)課學(xué)習(xí)的內(nèi)容。本節(jié)課的紅綠燈系統(tǒng)大家都已經(jīng)完成,那么這個(gè)紅綠燈系統(tǒng)有沒有需要完善改進(jìn)的地方?如顯示倒計(jì)時(shí)、堵車時(shí)手動(dòng)控制等,這些問題我們下一節(jié)課來解決。
(本案例由云南省教科院吳凝提供指導(dǎo))