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

用VB + Arduino開展創客式教學

2016-09-10 07:22:44吳海忠
中小學信息技術教育 2016年2期
關鍵詞:程序教學

吳海忠

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

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

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

連接游戲搖桿和Arduino板

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

安裝Arduino驅動程序

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

配置Arduino IDE

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

編寫Arduino程序

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

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

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

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

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

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

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

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

編寫VB程序

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

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

MSComm控件的CommPort屬性值要設置為6,也就是Arduino板所在的串口號。RThreshold的屬性值設置為1,也就是每當接收到一個字符時就觸發MSComm控件的OnComm事件。因為Arduino的數據傳輸速率已設置為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所示。

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

Private SBuffer As String

'增加一個窗體變量,作為接收緩沖區

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)

'調用過程

SLeft = ""

Case Else

'其他任何字符作加入輸出內容

SLeft = SLeft&SChar

End Select

Next

SBuffer = SLeft

'剩余內容保留給下一次

End Sub

Private Sub OnComing(ByValSStr As String)

Debug.PrintSStr

End Sub

CStart_Click和CStop_Click過程代碼保持不變。運行工程,單擊窗體上“開始”按鈕。此時立即窗口顯示如圖13所示。

在MSCom_OnComm事件處理過程中,每接收到一組正確的數據時OnComing過程就被調用一次。將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

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

小 ?結

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

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

猜你喜歡
程序教學
微課讓高中數學教學更高效
甘肅教育(2020年14期)2020-09-11 07:57:50
如何讓高中生物教學變得生動有趣
甘肅教育(2020年12期)2020-04-13 06:25:34
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
“自我診斷表”在高中數學教學中的應用
東方教育(2017年19期)2017-12-05 15:14:48
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
對外漢語教學中“想”和“要”的比較
唐山文學(2016年2期)2017-01-15 14:03:59
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 国产嫖妓91东北老熟女久久一| 人人91人人澡人人妻人人爽| 九九线精品视频在线观看| 色婷婷综合激情视频免费看| 国产午夜在线观看视频| 国产毛片高清一级国语| 欧亚日韩Av| 毛片视频网址| 国产9191精品免费观看| 亚洲国产系列| 日韩毛片免费| 99视频国产精品| 国产毛片一区| 欧美一区二区三区国产精品| 欧美色99| 自拍偷拍欧美日韩| 国产午夜无码专区喷水| 日本成人不卡视频| 在线国产欧美| 国产一级无码不卡视频| 亚洲天堂网站在线| 国产乱码精品一区二区三区中文 | 国产精品毛片一区| 天天激情综合| 久久黄色一级视频| 欧美自慰一级看片免费| 热久久国产| 欧美精品成人一区二区视频一| 国产综合日韩另类一区二区| 色窝窝免费一区二区三区| 国产99精品久久| 亚洲人成在线精品| 亚洲天堂网在线视频| 国产免费精彩视频| 亚洲大学生视频在线播放| 色婷婷亚洲综合五月| 久久一级电影| 欧美精品二区| 日韩色图在线观看| 亚洲精品无码久久毛片波多野吉| 国产菊爆视频在线观看| 青青青视频91在线 | 免费Aⅴ片在线观看蜜芽Tⅴ | 日本在线亚洲| 久久久无码人妻精品无码| 手机在线国产精品| 久久精品欧美一区二区| 天堂av综合网| 无遮挡国产高潮视频免费观看| 中文字幕一区二区视频| 制服丝袜 91视频| 午夜毛片免费看| 尤物精品视频一区二区三区| 久久久久88色偷偷| 天天综合网站| 国产偷倩视频| 国产高清又黄又嫩的免费视频网站| 久久国产高清视频| 99在线视频免费| 华人在线亚洲欧美精品| 日韩在线视频网| 久久国产热| 91午夜福利在线观看| 一本久道久综合久久鬼色| 欧美成人精品一级在线观看| 欧美三級片黃色三級片黃色1| 中文字幕66页| 亚洲国产91人成在线| 毛片大全免费观看| 日本三级欧美三级| 不卡色老大久久综合网| 欧美高清日韩| 亚洲天堂精品视频| 日日摸夜夜爽无码| 久久久成年黄色视频| 国产亚洲视频中文字幕视频 | 婷婷六月天激情| 久久精品无码中文字幕| a网站在线观看| 久久精品亚洲中文字幕乱码| 无码专区国产精品一区| 久操中文在线|