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

大 創(chuàng) 實(shí) 驗(yàn) 室

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

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

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


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




1、學(xué)會(huì)使用按鍵驅(qū)動(dòng)板載蜂鳴器工作;

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

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

1、鍵位發(fā)聲

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

認(rèn)識(shí)“結(jié)束聲音”代碼塊

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


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


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

2、函數(shù)應(yīng)用

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

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

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


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

下面我們以一個(gè)實(shí)際運(yùn)用來(lái)說(shuō)明一下“創(chuàng)建函數(shù)”代碼塊的使用方法:


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

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


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


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

3、程序中斷命令

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

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


認(rèn)識(shí)“中斷”代碼塊

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

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




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


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

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

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

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

1、繪制方塊

在前面的課程里,我們已經(jīng)學(xué)過(guò)用OLED屏顯示矩形,這里用到同樣的代碼塊“繪制矩形”,不過(guò)其中的參數(shù)需要調(diào)整一下(因?yàn)槲覀円刂品綁K移動(dòng),所以方塊尺寸要合適)。

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



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

此時(shí)繪制的方塊只有四條邊,中間是空的,所以要在“填充”后面打鉤,這樣這個(gè)邊長(zhǎng)為4的方塊才能填充起來(lái)。


運(yùn)行以上程序,OLED屏中間會(huì)顯示一個(gè)填充后的小方塊。


2、施加約束

認(rèn)識(shí)“約束”代碼塊

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



因?yàn)槠聊坏臋M向范圍為0~127,縱向范圍為0~63,方塊邊長(zhǎng)為4,所以x的范圍為0~124,y的范圍為0~60,可以用以下代碼塊來(lái)限定x與y的范圍,這樣方塊就不會(huì)超出屏幕了。


3、按鍵控制

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


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

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


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


運(yùn)行以上程序,按鍵的上下左右可以控制小方塊的移動(dòng)方向,確定鍵按下時(shí),小方塊回到屏幕中心。

三、延伸與擴(kuò)展——Arts

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


請(qǐng)以小組的形式進(jìn)行合作,嘗試使用屏幕和按鍵做一個(gè)貪吃蛇游戲 。

設(shè)計(jì)要求:

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

保證控制方式安全可靠。



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