999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

用VB + Arduino開(kāi)展創(chuàng)客式教學(xué)

2016-09-10 07:22:44吳海忠
關(guān)鍵詞:程序教學(xué)

吳海忠

普通高中信息技術(shù)課程的總目標(biāo)是提升學(xué)生的信息素養(yǎng),培養(yǎng)信息時(shí)代的合格公民。浙江省普通高中信息技術(shù)必修模塊《信息技術(shù)基礎(chǔ)》和選修模塊《算法與程序設(shè)計(jì)》都選用Visual Basic作為算法教學(xué)語(yǔ)言。在學(xué)習(xí)Visual Basic語(yǔ)言時(shí),怎樣激發(fā)學(xué)生的學(xué)習(xí)興趣,并使其長(zhǎng)久保持學(xué)習(xí)的熱情;開(kāi)發(fā)校本選修課時(shí),能開(kāi)出一門(mén)既有深度又能吸引學(xué)生的Visual Basic課程;學(xué)習(xí)Visual Basic語(yǔ)言時(shí)還能培養(yǎng)動(dòng)手能力和創(chuàng)新能力;學(xué)有余力的學(xué)生在學(xué)習(xí)完Visual Basic語(yǔ)言后能順利自學(xué)C語(yǔ)言。基于這些思考,筆者提出用Visual Basic 6 + Arduino開(kāi)展創(chuàng)客式教學(xué)。

所謂創(chuàng)客式教學(xué)是指用創(chuàng)客的理念和方式來(lái)改造日常的教學(xué),形成新的教學(xué)模式。創(chuàng)客理念主要指:①將創(chuàng)意變成實(shí)物;②做中學(xué);③持續(xù)分享;④協(xié)作學(xué)習(xí);⑤跨學(xué)科;⑥運(yùn)用信息技術(shù)。Arduino是一款便捷靈活、方便上手的開(kāi)源電子原型平臺(tái),包含硬件(各種型號(hào)的Arduino板)和軟件(Arduino IDE)。Arduino硬件都非常便宜,購(gòu)買(mǎi)也非常方便,適合開(kāi)展低成本的教學(xué)。Arduino通過(guò)各種各樣的傳感器來(lái)感知環(huán)境,通過(guò)控制燈光、馬達(dá)和其他的裝置來(lái)反饋、影響環(huán)境。在A(yíng)rduino IDE中,通過(guò)Arduino語(yǔ)言編寫(xiě)程序,并將編譯后的二進(jìn)制文件燒錄進(jìn)微控制器,實(shí)現(xiàn)傳感器和執(zhí)行器的協(xié)同工作。在開(kāi)展Visual Basic教學(xué)時(shí),Visual Basic程序可以扮演執(zhí)行器、控制器等角色。

下面以游戲搖桿操控VB窗體中圖像實(shí)現(xiàn)自由移動(dòng)為例,介紹如何實(shí)現(xiàn)VB和 Arduino協(xié)同工作,為開(kāi)展VB + Arduino教學(xué)拋磚引玉。

連接游戲搖桿和Arduino板

圖1為游戲搖桿和Arduino板連接實(shí)物圖,各針腳對(duì)應(yīng)連接如表1所示。搖桿由Arduino板的5V輸出電壓供電,原始狀態(tài)下S-X,S-Y讀出電壓約2.5V。當(dāng)沿板上X和Y箭頭方向按下,讀出電壓值隨著增加,最大到5V;當(dāng)沿X和Y箭頭反方向按下,讀出電壓值隨著減少,最小為0V。Arduino板上的A0和A1為模擬量輸入腳,讀取時(shí)0~5V電壓值已被轉(zhuǎn)換為數(shù)值0~1023。

安裝Arduino驅(qū)動(dòng)程序

將連接Arduino的USB口插入到計(jì)算機(jī)后,Windows會(huì)提示“發(fā)現(xiàn)新硬件”。Arduino板本身將作為計(jì)算機(jī)的一個(gè)串口設(shè)備,由于計(jì)算機(jī)中沒(méi)有相應(yīng)的驅(qū)動(dòng)程序,會(huì)顯示安裝失敗。進(jìn)入Windows設(shè)備管理器,在端口(COM和LPT)下找到帶黃色感嘆號(hào)的USB Device,通過(guò)手動(dòng)指定驅(qū)動(dòng)程序文件夾位置來(lái)安裝驅(qū)動(dòng)程序(具體參考網(wǎng)上教程)。對(duì)于Windows 7以上操作系統(tǒng)可通過(guò)在線(xiàn)搜索安裝驅(qū)動(dòng)程序。安裝好驅(qū)動(dòng)程序后,Arduino板在設(shè)備管理器中顯示如圖2所示,在筆者計(jì)算機(jī)中Arduino作為串口6設(shè)備。

配置Arduino IDE

登錄網(wǎng)址https://www.arduino.cc/en/Main/Software,下載最新的Arduino開(kāi)發(fā)環(huán)境IDE。運(yùn)行Arduino IDE:①進(jìn)入工具菜單選擇開(kāi)發(fā)板型號(hào),基礎(chǔ)版選擇“Arduino/Genuino Uno”;②選擇Arduino所在的串行端口號(hào)(參考設(shè)備管理器提示),這里選擇“COM6”,如圖3所示。

編寫(xiě)Arduino程序

根據(jù)當(dāng)前連接的感應(yīng)器和執(zhí)行器協(xié)同工作需要,為Arduino編寫(xiě)相應(yīng)的程序。Arduino程序主要的功能:設(shè)置連接外接設(shè)備針腳模式和參數(shù),讀取外接設(shè)備數(shù)據(jù),控制外接設(shè)備等。作為授課老師,這些程序是需要了解或會(huì)編寫(xiě)的,學(xué)有余力的學(xué)生可以自學(xué)和編寫(xiě),普通學(xué)生只需能將程序編譯和上傳(燒錄進(jìn)微控制器)。Arduino編程語(yǔ)言是建立在C語(yǔ)言基礎(chǔ)上的,有C語(yǔ)言基礎(chǔ)的能很快上手。圖4是進(jìn)入Arduino IDE后默認(rèn)建立的程序框架。

Arduino語(yǔ)言以setup函數(shù)作程序開(kāi)頭,loop函數(shù)作程序框架主體。setup函數(shù)用來(lái)初始化變量、管腳模式,調(diào)用庫(kù)函數(shù)等,只運(yùn)行一次。loop函數(shù)在setup函數(shù)運(yùn)行后,被周而復(fù)始的循環(huán)執(zhí)行。Arduino語(yǔ)言參考網(wǎng)址http://www.arduino.cn/reference/。為搖桿編寫(xiě)的代碼如圖5所示。

Serial.begin(9600):將串口通信速率設(shè)置為9600bps。通信的兩端要保持相同的傳輸速率,Arduino將通過(guò)USB與計(jì)算機(jī)連接的接口定義為Serial對(duì)象。

Serial.flush():等待串口數(shù)據(jù)傳輸完成,并將緩沖區(qū)清空。

analogRead函數(shù)的功能是讀取指定模擬針腳的值,A0、A1是模擬針腳0和1的別名。模擬針腳上的電壓值(0~5V)經(jīng)模/數(shù)轉(zhuǎn)換后變?yōu)橐粋€(gè)整數(shù)值(0~1023)。Serial.print函數(shù)的功能為將數(shù)據(jù)以字符串方式輸出到串口。Serial.println函數(shù)在輸出時(shí)數(shù)據(jù)的同時(shí)在后面增加回車(chē)符(ASCII 13)和換行符(ASCII 10)。delay函數(shù)為讓程序等待多少毫秒,然后往下執(zhí)行。

由于loop函數(shù)是被循環(huán)執(zhí)行的,因此整個(gè)程序的功能為首先設(shè)置端口傳輸速率為9600位/秒,然后每隔0.1秒讀取模擬針腳0和1上的數(shù)值,并將這二個(gè)數(shù)值用分號(hào)分隔,再連接回車(chē)換行符,最后輸出到串口。當(dāng)然程序還可以更完善或更精煉。

單擊工具欄上第一個(gè)按鈕對(duì)程序進(jìn)行驗(yàn)證(編譯),如圖6。在程序通過(guò)驗(yàn)證后,單擊工具欄上的第二個(gè)按鈕,將程序重新編譯并上傳給Arduino板,如圖7所示。Arduino在有程序上傳后,首先進(jìn)行初始化,然后按上傳程序指令重新開(kāi)始工作。

為了驗(yàn)證程序是否有效,單擊工具菜單中“串口監(jiān)視器”,打開(kāi)監(jiān)視窗口。如圖8所示,監(jiān)視窗口中不斷收到Arduino發(fā)送過(guò)來(lái)的數(shù)據(jù)。按動(dòng)游戲搖桿,數(shù)據(jù)會(huì)變化,如圖9所示。

編寫(xiě)VB程序

運(yùn)行VB6,新建一個(gè)工程文件。在工程中添加MSComm控件,如圖10所示。MSComm是一個(gè)串行通信控件,它提供了一系列標(biāo)準(zhǔn)通信命令的接口,允許建立串口連接。MSComm采用事件驅(qū)動(dòng)通信,當(dāng)有字符到達(dá)或發(fā)生了改變,OnComm事件就被觸發(fā)。

在窗體中添加二個(gè)CommandButton控件,一個(gè)Image控件,一個(gè)MSComm控件。工程屬性、窗體屬性和窗體內(nèi)各控件屬性設(shè)置如表2所示,窗體界面設(shè)計(jì)如圖11所示。

MSComm控件的CommPort屬性值要設(shè)置為6,也就是Arduino板所在的串口號(hào)。RThreshold的屬性值設(shè)置為1,也就是每當(dāng)接收到一個(gè)字符時(shí)就觸發(fā)MSComm控件的OnComm事件。因?yàn)锳rduino的數(shù)據(jù)傳輸速率已設(shè)置為9600bps,所以Settings屬性值無(wú)需修改。

在窗體代碼窗口輸入以下代碼:

Private Sub CStart_Click()

MSCom.PortOpen = True

End Sub

Private Sub CStop_Click()

MSCom.PortOpen = False

End Sub

Private Sub MSCom_OnComm()

Debug.PrintMSCom.Input

End Sub

運(yùn)行工程,單擊窗體中“開(kāi)始”按鈕。VB6立即窗口顯示如圖12所示。

雖然設(shè)置RThreshold為1,即每接收到一個(gè)字符時(shí)觸發(fā)OnComm事件,但讀取時(shí)緩沖區(qū)內(nèi)容可能已經(jīng)有好幾個(gè)字符了。因此,需要根據(jù)回車(chē)換行符進(jìn)行重組。窗口代碼如下:

Private SBuffer As String

'增加一個(gè)窗體變量,作為接收緩沖區(qū)

Private Sub MSCom_OnComm()

Dim I As Byte

Dim STmpAs String, SLeft As String, SChar As String

STmp = MSCom.Input

SBuffer = SBuffer&STmp

SLeft = ""

For I = 1 To Len(SBuffer)

SChar = Mid(SBuffer, I, 1)

Select Case Asc(SChar)

Case 10

'檢測(cè)到換行符不做什么作丟棄

Case 13

'檢測(cè)到回車(chē)符時(shí)

Call OnComing(SLeft)

'調(diào)用過(guò)程

SLeft = ""

Case Else

'其他任何字符作加入輸出內(nèi)容

SLeft = SLeft&SChar

End Select

Next

SBuffer = SLeft

'剩余內(nèi)容保留給下一次

End Sub

Private Sub OnComing(ByValSStr As String)

Debug.PrintSStr

End Sub

CStart_Click和CStop_Click過(guò)程代碼保持不變。運(yùn)行工程,單擊窗體上“開(kāi)始”按鈕。此時(shí)立即窗口顯示如圖13所示。

在MSCom_OnComm事件處理過(guò)程中,每接收到一組正確的數(shù)據(jù)時(shí)OnComing過(guò)程就被調(diào)用一次。將OnComing過(guò)程修改為如下:

Private Sub OnComing(ByValSStr As String)

Dim L As Integer, T As Integer, Tmp() As String

Tmp = Split(SStr, ";")

L = Tmp(0): ?T = Tmp(1)

If L < 411 Then ITurtle.Left = ITurtle.Left - (511 - L)

If L > 611 Then ITurtle.Left = ITurtle.Left + (L - 511)

If T < 411 Then ITurtle.Top = ITurtle.Top - (511 - T)

If T > 611 Then ITurtle.Top = ITurtle.Top + (T - 511)

End Sub

運(yùn)行工程,單擊窗體上“開(kāi)始”按鈕。上下、左右按下?lián)u桿,窗體中的小烏龜圖片將上下、左右移動(dòng),按力越大移動(dòng)速度也越快。在搖桿初始狀態(tài)下,讀出數(shù)據(jù)約為513~516,而程序中411~611間的數(shù)據(jù)不作移動(dòng)處理,因此初始狀態(tài)下圖片不會(huì)自己移動(dòng)。

小 ?結(jié)

在小學(xué)階段,可以利用S4A(Scratch For Arduino)開(kāi)展創(chuàng)客式教學(xué)。對(duì)于浙江的中學(xué)生來(lái)說(shuō),在學(xué)習(xí)完VB后,開(kāi)展VB + Arduino創(chuàng)客式教學(xué)是很有必要和很有前景的。由于篇幅關(guān)系,這里僅以一個(gè)小小的例子演示如何利用VB + Arduino編程實(shí)現(xiàn)協(xié)同工作。在實(shí)際教學(xué)時(shí),根據(jù)學(xué)習(xí)進(jìn)度和能力的不同,可以給學(xué)生提出不同的編程要求。比如在初學(xué)時(shí),教師可以將MSCom控件和OnComm事件處理過(guò)程(含數(shù)據(jù)整理代碼)重新封裝為一個(gè)控件,學(xué)生只要在工程中添加這個(gè)控件并設(shè)置基本屬性就可。為Arduino編寫(xiě)的程序,教師可以事先發(fā)給學(xué)生,學(xué)生只需要在使用前上傳一下就可。而學(xué)有余力的學(xué)生,教師可以引導(dǎo)他們閱讀和模仿這些代碼。

(作者單位:浙江嘉興教育學(xué)院)

猜你喜歡
程序教學(xué)
微課讓高中數(shù)學(xué)教學(xué)更高效
甘肅教育(2020年14期)2020-09-11 07:57:50
如何讓高中生物教學(xué)變得生動(dòng)有趣
甘肅教育(2020年12期)2020-04-13 06:25:34
試論我國(guó)未決羈押程序的立法完善
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
“自我診斷表”在高中數(shù)學(xué)教學(xué)中的應(yīng)用
東方教育(2017年19期)2017-12-05 15:14:48
英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
對(duì)外漢語(yǔ)教學(xué)中“想”和“要”的比較
創(chuàng)衛(wèi)暗訪(fǎng)程序有待改進(jìn)
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 91免费在线看| 国产成人麻豆精品| 欧美精品v欧洲精品| 3344在线观看无码| 88国产经典欧美一区二区三区| 亚洲av成人无码网站在线观看| 天天综合网色中文字幕| 狠狠亚洲婷婷综合色香| 伊人中文网| 91精品情国产情侣高潮对白蜜| 亚洲香蕉在线| 国产成人啪视频一区二区三区 | 成人91在线| 国产男女免费视频| 一级毛片高清| 午夜视频免费试看| 欧美亚洲一二三区| 国产办公室秘书无码精品| 亚洲男人天堂久久| 伊人久久精品无码麻豆精品| 天堂在线www网亚洲| 91久久精品国产| 热久久这里是精品6免费观看| 伊人激情综合网| 亚洲日韩国产精品综合在线观看| 欧美成人综合视频| 免费av一区二区三区在线| 久久精品丝袜| 日韩精品一区二区三区大桥未久| 欧美午夜理伦三级在线观看| 青青草原国产免费av观看| 伊人91视频| 久久先锋资源| 欧美日韩精品在线播放| 日韩欧美中文字幕一本 | 亚洲欧美日韩天堂| 97国产在线播放| 亚洲丝袜第一页| 999国内精品久久免费视频| 精品福利视频导航| 9966国产精品视频| 久久成人免费| 亚洲精品成人福利在线电影| www.精品视频| 亚洲Va中文字幕久久一区| 久久香蕉国产线| av在线无码浏览| 欧美成a人片在线观看| 欧美乱妇高清无乱码免费| 日韩成人午夜| hezyo加勒比一区二区三区| 狠狠操夜夜爽| 尤物视频一区| 欧美亚洲一区二区三区在线| 性喷潮久久久久久久久| 亚洲黄色激情网站| 四虎成人精品| 欧美不卡视频在线观看| 精品国产香蕉伊思人在线| 欧美色视频日本| 99久久99视频| 日本亚洲欧美在线| 最新加勒比隔壁人妻| 欧美一级视频免费| 日本一区二区三区精品视频| 最新亚洲人成网站在线观看| 毛片免费观看视频| 亚洲资源站av无码网址| 亚洲黄色视频在线观看一区| 99精品视频在线观看免费播放| 波多野结衣无码中文字幕在线观看一区二区| 国产性生交xxxxx免费| 啪啪啪亚洲无码| 精品天海翼一区二区| 无码综合天天久久综合网| 欧美不卡二区| 色老头综合网| 亚洲国产精品不卡在线| 99在线国产| 91精品日韩人妻无码久久| 国产精品短篇二区| 最新国产精品第1页|