通過(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 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拖到右邊輸入下邊即可 下面我們以一個(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初始化”代碼塊 此時(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ì)要求: (能夠用按鍵操控貪吃蛇小游戲,其中確定鍵可以暫停與開始游戲; (保證控制方式安全可靠。 |