通過編程實現(xiàn)按鍵控制OLED屏中的方塊移動。"/>

大 創(chuàng) 實 驗 室

更多內(nèi)容請聯(lián)系我們

第三章 科創(chuàng)板-鍵位控制

發(fā)表時間:2020-08-24 10:32作者:大創(chuàng)實驗室來源:大創(chuàng)實驗室網(wǎng)址:http://www.taozhuangwang.net


第三章第2課 科創(chuàng)板-鍵位控制




1、學會使用按鍵驅(qū)動板載蜂鳴器工作;

2、通過編程實現(xiàn)按鍵控制OLED屏中的方塊移動。

1
按鍵驅(qū)動蜂鳴器——Science and Math

1、鍵位發(fā)聲

我們首先用按鍵控制蜂鳴器執(zhí)行簡單的功能:當按鍵上按下時,蜂鳴器播放聲音1秒,然后停止發(fā)聲。

認識“結束聲音”代碼塊

“結束聲音”代碼塊位于“執(zhí)行器”模塊中,它的功能是終止蜂鳴器的發(fā)聲。


按鍵控制蜂鳴器發(fā)聲程序如下:


將上圖程序下載到科創(chuàng)板,當按鍵上按下時,蜂鳴器播放聲音1秒,然后停止發(fā)聲。

2、函數(shù)應用

當我們的程序中需要多次用到一組相同的代碼時,我們可以用函數(shù)來實現(xiàn),每次用到這段代碼時調(diào)用即可。

認識“創(chuàng)建函數(shù)”代碼塊

“創(chuàng)建函數(shù)”代碼塊位于“函數(shù)”模塊中,它的功能是創(chuàng)建一個不帶輸出值的函數(shù)模塊。


在函數(shù)中可以設置變量,點擊藍色設置按鈕,彈出參數(shù)框,將參數(shù)X拖到右邊輸入下邊即可 這時候代碼塊上出現(xiàn)了變量參數(shù)X 。

下面我們以一個實際運用來說明一下“創(chuàng)建函數(shù)”代碼塊的使用方法:


上面的函數(shù)表示:每間隔x微秒(1秒=1000毫秒=1000000微秒),蜂鳴器電平切換一次,即表示生成頻率為1000000/2x的聲音信號。

當我們創(chuàng)建好函數(shù)代碼時,在“函數(shù)”模塊中會出現(xiàn)一個新的代碼塊,“執(zhí)行函數(shù)參數(shù)X”代碼塊,它的作用是執(zhí)行用戶自定義參數(shù)為X的函數(shù)塊。


通過上、下、左、右四個按鍵(對應的管腳分別為:12、23、36、2,其中按鍵左的邏輯是反的),控制蜂鳴器發(fā)出不同頻率聲音的程序:


運行上面的程序,我們就可以通過點擊不同按鍵控制蜂鳴器發(fā)出不同頻率的聲音了。

3、程序中斷命令

“中斷”是指科創(chuàng)板在運行程序的過程中,由于出現(xiàn)一些特別的情況,停止當前的程序去執(zhí)行新的程序,等處理完成后再返回原來被暫停的程序繼續(xù)執(zhí)行。

中斷可以類比生活中的例子:比如你正在看電視,突然門口門鈴響起,有快遞送上門,所以你就暫停看電視去拿快遞,等收完快遞后繼續(xù)看電視。在這個過程中,看電視是你主要的任務(主程序),而收快遞就是一個中斷過程,門鈴響起就是一個中斷的標志(觸發(fā)中斷的條件)。中斷示意圖如下:


認識“中斷”代碼塊

“中斷”代碼塊位于“輸入/輸出”模塊中,它的功能是設置指定管腳的中斷模式為上升、下降或者改變,并執(zhí)行回調(diào)函數(shù)。

中斷觸發(fā)的條件有三種:上升、下降和改變。上升模式為當管腳由低電平變?yōu)楦唠娖綍r,觸發(fā)中斷;下降模式為當管腳由高電平變?yōu)榈碗娖綍r,觸發(fā)中斷;改變模式為當管腳的電平發(fā)生變化的時候,觸發(fā)中斷。




這里我們展示一個實際中斷函數(shù)的程序,做完這個,大家就會更深入的了解中斷的含義了,程序如下:


此程序設置的中斷是當檢測到按鍵上被按下時,就會執(zhí)行回調(diào)函數(shù)里的程序。將上面的程序下載到科創(chuàng)板后,我們點擊按鍵上,就可以聽到蜂鳴器發(fā)出的三種不同聲音了。

二、鍵位控制OLED屏——Technology and Math

我們可以驅(qū)動按鍵去控制多彩LED燈以及蜂鳴器工作了,接下來,我們要做的就是要讓按鍵功能更加直觀的體現(xiàn)出來。大家來思考一個問題,我們可不可以通過按鍵移動屏幕上顯示的方塊呢,怎樣去實現(xiàn)這個功能呢?

為了實現(xiàn)上述的功能,我們可以分步進行:

1、繪制方塊

在前面的課程里,我們已經(jīng)學過用OLED屏顯示矩形,這里用到同樣的代碼塊“繪制矩形”,不過其中的參數(shù)需要調(diào)整一下(因為我們要控制方塊移動,所以方塊尺寸要合適)。

我們將方塊的邊長定為4,那么 “繪制矩形”代碼塊里關于寬度高度設置的兩個變量要改為4;開始時方塊要顯示在屏幕中央,相對應的起點參數(shù)設置x=62,y=30。



上面兩種程序表達方式都可以,第二種里面的“科創(chuàng)板oled初始化”代碼塊 ( “科創(chuàng)板oled初始化”代碼塊位于“科創(chuàng)板v2.0”模塊里)與第一種里面的 兩代碼塊的功能是一樣的。相較于第一種程序表達,第二種更簡潔,所以后面我們使用第二種表達方式講解剩余程序部分。

此時繪制的方塊只有四條邊,中間是空的,所以要在“填充”后面打鉤,這樣這個邊長為4的方塊才能填充起來。


運行以上程序,OLED屏中間會顯示一個填充后的小方塊。


2、施加約束

認識“約束”代碼塊

“約束”代碼塊位于“數(shù)學”模塊中,它的功能是限制數(shù)字或者變量介于兩個指定的數(shù)字之間。



因為屏幕的橫向范圍為0~127,縱向范圍為0~63,方塊邊長為4,所以x的范圍為0~124,y的范圍為0~60,可以用以下代碼塊來限定x與y的范圍,這樣方塊就不會超出屏幕了。


3、按鍵控制

右鍵按下讓x增加4,y保持不變(小方塊向右移動4步):


同理,可以推寫出上、下、左鍵按下時的程序塊(需要注意的是左鍵的邏輯是反的,所以左鍵的判定條件是當管腳36的值等于0時)。

我們把確定鍵作為初始化按鍵(讓小方塊回到OLED屏幕中點):


程序分塊到這里就講解完成了,接下來我們只需要把之前編寫好的程序塊結合起來就可以實現(xiàn)按鍵控制小方塊的移動了,程序如下:


運行以上程序,按鍵的上下左右可以控制小方塊的移動方向,確定鍵按下時,小方塊回到屏幕中心。

三、延伸與擴展——Arts

想一想,我們可不可以用屏幕和按鍵做一個貪吃蛇游戲呢,怎樣去實現(xiàn)?


請以小組的形式進行合作,嘗試使用屏幕和按鍵做一個貪吃蛇游戲 。

設計要求:

能夠用按鍵操控貪吃蛇小游戲,其中確定鍵可以暫停與開始游戲;

保證控制方式安全可靠。



山東省濟南市歷下區(qū)舜華路750號大學科技園北區(qū)3號樓
服務熱線:13256445996                                  www.taozhuangwang.net