亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2016-09-10 07:22:44吳海忠
        關(guān)鍵詞:針腳窗體搖桿

        吳海忠

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

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

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

        連接游戲搖桿和Arduino板

        圖1為游戲搖桿和Arduino板連接實物圖,各針腳對應(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為模擬量輸入腳,讀取時0~5V電壓值已被轉(zhuǎn)換為數(shù)值0~1023。

        安裝Arduino驅(qū)動程序

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

        配置Arduino IDE

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

        編寫Arduino程序

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

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

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

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

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

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

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

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

        編寫VB程序

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

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

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

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

        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

        運行工程,單擊窗體中“開始”按鈕。VB6立即窗口顯示如圖12所示。

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

        Private SBuffer As String

        '增加一個窗體變量,作為接收緩沖區(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

        '檢測到換行符不做什么作丟棄

        Case 13

        '檢測到回車符時

        Call OnComing(SLeft)

        '調(diào)用過程

        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過程代碼保持不變。運行工程,單擊窗體上“開始”按鈕。此時立即窗口顯示如圖13所示。

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

        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

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

        小 ?結(jié)

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

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

        猜你喜歡
        針腳窗體搖桿
        吉利帝豪EV汽車手自一體式燈光系統(tǒng)電路檢修*
        汽車電器(2022年8期)2022-08-29 08:02:14
        街機、格斗游戲更暢爽
        電腦愛好者(2022年5期)2022-05-30 14:58:47
        曲柄搖桿機構(gòu)的急回程度分析與探討*
        曲柄與搖桿擺角的關(guān)系
        試談Access 2007數(shù)據(jù)庫在林業(yè)檔案管理中的應(yīng)用
        檔案天地(2019年5期)2019-06-12 05:12:02
        曲柄搖桿行星系取苗機構(gòu)參數(shù)匹配與優(yōu)化
        詩句如針腳,繡遍傾城舊事
        一種繼電器單元的設(shè)計與應(yīng)用
        點、點、點……
        基于LayeredWindow的異形窗體局部刷新
        中文信息(2014年2期)2014-03-06 23:49:14
        国产中文字幕亚洲国产| 99国产综合精品-久久久久| 女同av在线观看网站| 亚洲无码激情视频在线观看| 二区三区视频在线观看| 宅男噜噜噜| 国产精品亚洲一区二区杨幂| 成人无码网www在线观看| 日本一区二区亚洲三区| 亚洲中文字幕免费精品| 最新在线观看免费的a站国产| 国产一级黄色av影片| 国产精品区二区东京在线| 粉嫩的极品女神尤物在线| 色哟哟亚洲色精一区二区| 日本va欧美va精品发布| 中文字幕久久精品一二三区 | 人妻系列无码专区久久五月天| 精品视频手机在线免费观看| 亚洲精品一区二区国产精华液| 亚洲国产精品va在线看黑人| 色爱区综合五月激情| 免费一区啪啪视频| 东京热加勒比日韩精品| 美女视频在线观看一区二区三区| 亚洲综合日韩一二三区| 人妻无码一区二区三区| 国产精品无码av天天爽| 中文字幕高清在线一区二区三区| 国产成人一区二区三区视频免费蜜 | 国产精品毛片完整版视频| 国产精品一区二区韩国AV | 成人美女黄网站色大免费的| 久久久久亚洲av无码专区体验| 免费AV一区二区三区无码| 中文字幕麻豆一区二区| 久久综合九色综合97婷婷| 日本又色又爽又黄的a片18禁| 国产av无码专区亚洲awww| 911精品国产91久久久久| 高清亚洲成av人片乱码色午夜 |