孫麗君 張婷婷
圖形化編程作為中小學(xué)生學(xué)習(xí)編程的入門語言,可以輕松把孩子們吸引到編程世界中來。作為一款為教育量身定制的開源硬件,虛谷號在這方面已做好準(zhǔn)備,預(yù)裝了Scratch、S4A、Ardublock等圖形化編程軟件。這里我們選擇使用基于虛谷號的S4A和Ardublock圖形化編程軟件,來設(shè)計(jì)兩個(gè)教學(xué)案例,并結(jié)合支持Arduino生態(tài)系統(tǒng)中的多類硬件,來探索如何在中小學(xué)開展基于虛谷號的圖形化編程教學(xué)。
S4A(Scratch for Arduino)是一款在Scratch基礎(chǔ)上開發(fā)而成的軟件,它易學(xué)易用,能夠與Arduino開源硬件相結(jié)合,是中小學(xué)生學(xué)習(xí)軟硬件結(jié)合的互動(dòng)程序設(shè)計(jì)的最佳工具之一。但S4A有一點(diǎn)美中不足,即它不能脫離PC機(jī)運(yùn)行,而虛谷號彌補(bǔ)了它的不足,虛谷號預(yù)裝了Linux系統(tǒng),是一款獨(dú)立的卡片電腦,這樣,基于虛谷號的S4A就可以完成各種項(xiàng)目作品,并且由于其體積小,完全可以設(shè)計(jì)到作品內(nèi)。下面,我們以模擬智能家居中的防盜系統(tǒng)為例完成這個(gè)設(shè)計(jì)。
1.環(huán)境配置
虛谷號已經(jīng)預(yù)裝了S4A,首先需要上傳固件,之后便可用S4A編程控制硬件。我們首先打開Arduino IDE,找到文件S4AFirmware16.ino并打開。需要注意的是Linux系統(tǒng)沒有C盤、D盤、E盤那么多的盤符,只有一個(gè)根目錄(/),所有的文件(資源)都存儲(chǔ)在根目錄下的樹形目錄結(jié)構(gòu)中,且Linux中所有內(nèi)容都是以文件的形式保存和管理的,要對文件進(jìn)行操作必須獲得相應(yīng)權(quán)限。在虛谷號中,以scope用戶權(quán)限操作的文件,一般存放的位置在scope(??破眨┠夸浵?,因而S4A需要的固件S4AFirmware16.ino放在了/home/scope/wBoard/example/Arduino/S4AFirmware16/下面,然后上傳固件即可。這樣便可在虛谷號上使用S4A開展圖形化編程并控制開源硬件,來完成各個(gè)有趣的項(xiàng)目(如圖1)。
2.主題設(shè)計(jì)
課例設(shè)計(jì)的情境是:主人在室內(nèi)休息時(shí),有人非法闖入,防盜系統(tǒng)啟動(dòng),進(jìn)行鳴笛報(bào)警,且紅燈閃爍,以便嚇走盜賊或者提醒主人注意來人的動(dòng)向。這里使用人體紅外熱釋能傳感器來感應(yīng)報(bào)警。
3.器材準(zhǔn)備
本課例所需器材有人體紅外熱釋能傳感器、面包板、蜂鳴器、紅色LED燈、虛谷號、杜邦線若干。
4.硬件搭建
通過USB接口連接鼠標(biāo)、鍵盤、顯示器,并連接電源,正常顯示Linux界面后,再利用人體紅外熱釋能傳感器做一個(gè)報(bào)警裝置,當(dāng)人體靠近時(shí),發(fā)出警示。傳感器端腳VCC接5V,OUT接A5,GND接GND完成。蜂鳴器與紅色LED燈短腳接GND,蜂鳴器長腳接D9,小燈長腳接D13(如圖2)。
5.參考程序
本案例利用控制、動(dòng)作、數(shù)字和邏輯運(yùn)算三個(gè)模塊,來搭建程序。圖3中當(dāng)綠旗被點(diǎn)擊時(shí),同時(shí)啟動(dòng)兩段代碼。第一段代碼通過檢測A5端口數(shù)值,來進(jìn)行判斷是否有人靠近。如果數(shù)值等于零,則不啟動(dòng)防盜系統(tǒng),否則,啟動(dòng)系統(tǒng),使用循環(huán)語句控制蜂鳴器數(shù)值大小變化,做出警笛的效果。第二段代碼同樣通過A5端口控制實(shí)現(xiàn)紅燈閃爍效果。
在普通PC機(jī)上也可以運(yùn)行該實(shí)例,但不能脫機(jī)運(yùn)行,而虛谷號能夠很好地解決這一問題,我們可以引導(dǎo)學(xué)生再搭配上紅外傳感器、舵機(jī)、火焰?zhèn)鞲衅鞯葋碓O(shè)計(jì)出一系列多功能的智能家居配套系統(tǒng)。
最后進(jìn)行文件的保存,這里保存路徑默認(rèn)是scope下的Documents中,我們可以將文件保存到這個(gè)位置。那么,如何找到自己保存的文件呢?首先打開文件管理器,在主文件夾scope下,打開Documents,即可找到保存的文件。
虛谷號預(yù)裝了Arduino1.86版,其中內(nèi)置了圖形化編程工具Ardublock,它是以圖形化積木搭建的方式實(shí)現(xiàn)編程的,并且可以支持上載程序到Arduino板,實(shí)現(xiàn)脫機(jī)運(yùn)行。Ardublock中所有編程都可以通過搭積木的方式堆砌在一起,它把高級的計(jì)算機(jī)語言和專業(yè)的語法都簡化為了一個(gè)個(gè)模塊,并且使用不同的顏色進(jìn)行分類。虛谷號中支持Linux的Ardublock版本還可以選擇中文界面,并且它支持多種類型的開源硬件,適用于中小學(xué)軟硬件結(jié)合的圖形化編程教學(xué)。下面我們以模仿倒車?yán)走_(dá)報(bào)警為例,利用Ardublock完成這個(gè)設(shè)計(jì)。
1.啟動(dòng)Ardublock
虛谷號已經(jīng)預(yù)裝了Arduino IDE,打開里面的工具菜單,選擇Ardublock,即可啟動(dòng)(如下頁圖4)。
2.主題設(shè)計(jì)
本案例的設(shè)計(jì)是模仿倒車?yán)走_(dá),比較貼近實(shí)際生活。讓學(xué)生認(rèn)識超聲波測距傳感器、蜂鳴器等開源硬件的應(yīng)用。通過選擇、循環(huán)結(jié)構(gòu)的使用,來模仿倒車要碰壁時(shí)的連環(huán)報(bào)警。
3.器材準(zhǔn)備
需要用到的器材有虛谷號、超聲波測距傳感器、蜂鳴器、杜邦線若干。
4.硬件搭建
首先,連接虛谷號,正常顯示Linux界面后,將超聲波測距傳感器的四個(gè)引腳VCC接輸入電壓5V,Trig觸發(fā)引腳接D3,Echo回饋引腳接D4,GND接地。傳感器帶有兩個(gè)超聲波探頭,分別用作發(fā)射和接收超聲波,其測量范圍在3~450cm。最后,將蜂鳴器長腳連接D11,短腳接地(如圖5)。
5.參考程序
圖6是虛谷號中Ardublock程序圖。本案例運(yùn)用了控制模塊的選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu),還使用了硬件、檢測、引腳模塊等,來實(shí)現(xiàn)程序。開始時(shí),判斷超聲波所測距離是否小于10cm,如果條件成立,則重復(fù)執(zhí)行循環(huán)語句模塊,通過設(shè)置蜂鳴器數(shù)字端口D11的高低電平,來發(fā)出連續(xù)報(bào)警聲,否則D11為低電平。文件保存默認(rèn)位置在scope下。
該課例實(shí)現(xiàn)了倒車?yán)走_(dá)的基本功能,這里可引導(dǎo)學(xué)生結(jié)合生活經(jīng)驗(yàn),完成倒車?yán)走_(dá)的整個(gè)體系的程序搭建,實(shí)現(xiàn)判斷距離越小,蜂鳴器報(bào)警頻率越高。虛谷號中的Ardublock可視化和交互性較強(qiáng),編程門檻較低,并可以實(shí)時(shí)處理事件,使編程修改、測試等步驟都得以簡化。
綜上所述,基于虛谷號的這種圖形化編程教學(xué),結(jié)合了Arduino的硬件資源和長期積累的案例資源,并且降低了學(xué)生學(xué)習(xí)的門檻。同時(shí),能引導(dǎo)學(xué)生認(rèn)識Linux系統(tǒng),可以更好地結(jié)合一些開源平臺(tái)上的案例,使創(chuàng)意想法更豐富,適合中小學(xué)生體驗(yàn)創(chuàng)客的樂趣,便于更好地開展關(guān)于開源軟硬件的創(chuàng)客普惠教育。